Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
693 views
in Technique[技术] by (71.8m points)

visual studio - Debugging a C# executable that crashes on launch

I'm trying to remotely debug a C# program. Connecting to the host is not problem and I can see all the processes on running on that machine, and can connect to the msvsmon.exe.

However, the program I want to debug crashes immediately on launch giving me no time to attach myself to it. Also launching the debug executable in question through a remote location does nothing. How can I attach a debugger before the crash?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

One of my favorite tricks for attaching a debugger at program launch is using Image File Execution Options. It's a registry facility which allows you, amongst other things, attach a debugger to an application before its execution. Same trick allows, for example, replacing your Windows Task Manager with Process Explorer, or Notepad.exe with Notepad2.

You can read all about it here.

Here's how you set it up:

  • Run regedit.exe
  • Go to HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
  • Create a new key named as your exe (example: yourprogram.exe)
  • Create a new string value under your exe. The name of the string value is Debugger, and the value is vsjitdebugger.exe

When you run the executable, you will see the Just In Time prompt asking you to select a debugger:

vsjitdebugger

While this dialog is open, attach remotely to your process, and press No on the dialog.

Hope that helps.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...