为什么在启动程序时步进每个指令都会崩溃? [调试]

时间:2012-05-02 17:32:45

标签: debugging x86 x86-64 ollydbg

我正在尝试按照我用C ++编译的简单程序的执行指令(它计算一些素数然后退出)在调试器(ollydbg)中,但我有几个问题:

  • 为什么第一条指令不是“CODE”部分的入口点?它是不同的
  • 一旦我“跳过”一些指令,调试器就会崩溃并写入“ntdll.someaddress中的单步事件,按shift + F7 / F8 / F9将异常传递给程序”并崩溃。如果我在没有单步执行程序的情况下运行程序,它可以正常运行并且程序加载没有问题

为什么会这样?这不仅仅发生在我的程序中,而是发生在其他几个程序中(我的系统中几乎每隔一个32位exe程序)

1 个答案:

答案 0 :(得分:0)

如果您在64位操作系统下运行OllyDbg,我相信您运气不好,因为OllyDbg不支持x86-64 Windows,甚至不是用于调试32位应用程序的调试器。请参阅this forum thread,它来自2006年,但事实并非如此。他们建议使用不同的调试器,例如64位版本的WinDbg(这是一个很棒的调试器)。

  

为什么第一条指令不是“CODE”部分的入口点?它是不同的

您可以在OllyDbg中设置:选项 - 调试选项 - 事件 - “首先暂停”。您可以从位于ntdll中的“系统断点”开始,甚至在调用起始模块的入口点之前调用它。