Jam*_*add 5 .net debugging executable
我正在使用托管的EXE文件,该文件在运行时立即崩溃.通常我会期望一个允许选项启动调试器的对话框,但在这种情况下没有这样的运气.此外,程序崩溃太快,我无法在Visual Studio中使用附加进程.
解决办法是什么?
Mic*_*tum 14
如果安装了WinDbg,请使用菜单File → Open Executable直接在调试器下打开应用程序并立即自动中断.
然后,您可以使用Debug(即Go)下的命令正常执行并调试它.还要加载SOS扩展.不如Visual Studio好,但如果你只有EXE(希望是PDB,虽然这是可选的)并且没有来源,那就很有用.
示例:这是我的源代码,我们假设它不可用:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
int x = 10 - 10;
int i = 2000/x;
Application.Run(new Form1());
}
Run Code Online (Sandbox Code Playgroud)
这会立即崩溃,您无法及时附加调试器.这是点击"运行"后的WinDbg输出:
删除了死亡的ImageShack链接 - 由我自由旋转
加载SOS.dll后,您可以使用!DumpStack查看抛出异常的位置:
删除了死亡的ImageShack链接 - 没有手绘圈,对不起!
请注意,JIT或编译器优化可能会导致内联方法,这可能使StackTrace不是100%可靠,但是为了快速概述它可以工作.
WinDbg有点神秘,但是一旦你完成了一些基础知识,它就会很棒,至少有助于找到问题的根源.