如果应用程序†崩溃,
我点击了“Debug”,Visual Studio是我目前注册的实时(JIT)调试器:
出现Visual Studio,但无法调试任何内容:
其他JIT调试器产品能够显示反汇编,但它们是基于命令行的(Debugging Tools for Windows),或者不支持符号(OllyDbg,Delphi)。另外,我的问题是关于使用Visual Studio进行调试,因为我已经安装了它,它已经是我注册的JIT。
如何使用Visual Studio调试程序?
或者:是否有人编写了支持Microsoft符号服务器的图形化调试器?
†不一定是用Visual Studio编写的。
修改:将标题更改为进程而不是应用程序,因为后者以某种方式暗示“我的应用程序。 “
编辑:假设原始应用程序是由Steve Gibson用汇编语言编写的。也就是说,没有源代码或调试信息。 Visual Studio应该仍然能够向我显示程序集转储。
答案 0 :(得分:3)
看一下屏幕截图,看来Visual Studio当前正在运行模式下进行调试 - 在查看调用堆栈之类的内容之前,需要先中断流程的执行......
要中断进程的执行,您需要点击断点,或者您可以通过使用Pause / Break all工具栏项随时中断进程的执行( Control + Alt + Break )。
然后你应该能够在Debug - >下访问以下窗口。 Windows菜单:
其他一些有用的窗口:
默认情况下,其中一些可能不可见,具体取决于您第一次启动Visual Studio时选择的窗口配置 - 如果找不到它们,请右键单击工具栏并转到自定义以添加它们。
Visual Studio不会从反汇编中重建soucre代码 - 您确实需要使用原始源代码,否则符号几乎肯定与您正在调试的源代码不匹配。
如果您正在调试没有源代码的非托管模块,那么我建议您至少尝试WinDbg - 它的用户界面有时候有点笨拙,而且确实有一个陡峭的学习曲线但是,它是一个非常强大的调试器,支持Visual Studio所没有的许多功能 - 它可能更适合您需要进行的调试。
(Visual Studio是一个很棒的调试器,但它主要用于调试源代码可用的模块,因此它缺少某些功能,有利于提供更好的用户体验)。
答案 1 :(得分:2)
假设这是您在VS中编写的应用程序,只需按F5运行程序并使用断点,或手动中断程序以开始调试。
答案 2 :(得分:1)
最后一个屏幕截图中的问题是Visual Studio没有自动进入中断模式。这似乎是一个错误。如果按下工具栏上的“暂停”按钮,它将进入中断模式,为您提供反汇编和一个callstack。
根据最后一个截图,你实际上是附加到程序...输出窗口显示它加载了OLE和crt的剥离符号。
答案 3 :(得分:1)
如果您有可用于此程序的调试信息,则可以使用Visual Studio调试程序。编译Release版本(通常没有调试信息)和编译Debug版本之间的区别。
如果您正在测试自编程序的调试版本,则此调试程序对话框非常方便。您可以“即时”将它附加到Visual Studio调试器并查找问题。
如果它不是您的程序或它是您的程序,但不提供Visual Studio可以理解的调试信息,那么您就不走运了。
答案 4 :(得分:1)
使用菜单调试 - > Windows - > 反汇编(我认为键盘快捷键是 Alt + 8 ,但是我配置了VC 6.0绑定,因为这是我滚动的方式,它可能已经改变了。)
您可以从http://msdl.microsoft.com/download/symbols
获取操作系统的公共符号。将其添加到菜单工具 - >中的列表中选项 - > 调试 - > 符号 - > 符号文件位置。
此外,请确保您以与应用程序相同的完整性级别运行。或者始终以管理员身份运行Visual Studio。
答案 5 :(得分:0)
我猜你已经处于调试模式。 “运行”按钮被禁用。只需转到Debug - >窗户 - >反汇编以查看反汇编。