won*_*nea 7 c# debugging visual-studio-2010 visual-studio
我正在尝试远程调试C#程序.连接到主机是没有问题的,我可以看到该机器上运行的所有进程,并可以连接到msvsmon.exe.
但是,我想调试的程序在启动时立即崩溃,让我没有时间依赖它.通过远程位置启动有问题的调试可执行文件也不会产生任何问题.如何在崩溃前附加调试器?
Iga*_*nik 13
我最喜欢在程序启动时附加调试器的技巧之一就是使用Image File Execution Options.它是一个注册表工具,允许您在执行之前将调试器附加到应用程序.同样的伎俩允许,例如,与更换您的Windows任务管理器进程资源管理器,或Notepad.exe使用的Notepad2.
你可以在这里阅读所有相关内容.
以下是您设置的方式:
regedit.exeHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options Debugger,值是vsjitdebugger.exe运行可执行文件时,您将看到Just In Time提示,要求您选择调试器:

打开此对话框时,远程连接到您的进程,然后按No对话框.
希望有所帮助.
Dir*_*mar 10
发布时崩溃可能是由于缺少依赖性.fuslogvw.exe在启动应用程序之前运行,并查看是否有任何绑定操作失败.
如果这没有帮助,通常将诊断日志记录到位是一种好习惯.您可以使用专用的日志库,例如log4net,或者至少您应该使用最简单的日志记录形式System.Diagnostics.Trace.您可以通过在app.config中配置跟踪侦听器或使用第三方工具(如Sysinternals中的调试器或DebugView)来侦听跟踪消息.
如果您确实想要附加调试器,可以通过编程方式插入断点:
System.Diagnostics.Debugger.Break();
Run Code Online (Sandbox Code Playgroud)
我还没有检查它是如何工作的远程调试器,但作为最后的手段,您可以让您的应用程序睡眠足够长,以允许您附加调试器:
System.Threading.Thread.Sleep(30000);
Run Code Online (Sandbox Code Playgroud)