【问题标题】:In WinDbg, can I use software breakpoints without having symbols?在 WinDbg 中,我可以使用没有符号的软件断点吗?
【发布时间】:2010-06-08 17:42:13
【问题描述】:

我在使用 WinDbg 中的软件断点来中断给定地址时遇到问题。

这是一个 Visual C++ 6.0 MFC 可执行文件没有符号(相信我,我就是无法生成符号)。

假设我的可执行映像名为image00400000。使用软件断点 (bp):

0:000> bp image00400000 + 0x003ba1eb

0:000> bl

0 e 007ba1eb 0001 (0001) 0:**** image00400000+0x3ba1eb

0:000> 克

我从 .map 文件中得到相对地址 (0x003ba1eb)(这个我得到了)。我选择了一条我确定将被执行的行,但根本没有没有停止...

有人有什么想法吗?我会很感激他们。谢谢!

PD:如果还有什么要解释的或者您需要更多信息,请给我留言 :-)

【问题讨论】:

    标签: debugging visual-c++ windbg


    【解决方案1】:

    抱歉,我还不允许为 SO 创建 cmets(太新)。

    具体可用的信息有点棘手。我想断点地址可能没有正确计算。鉴于这种情况,我会尝试将断点地址计算为:模块开始 + 代码开始 + 映射文件的代码偏移量。也许这就是你所做的(除非我弄错了;-))

    另外值得注意的是,bp 地址需要在指令边界上对齐。如果没有,那么它将无法正确设置。如果您不得不猜测尝试在特定函数中设置断点,这可能是可能的。

    详细说明您希望程序在调试器中停止的条件可能会有所帮助。

    【讨论】:

      【解决方案2】:

      要添加符号,您需要进行调试构建

      构建菜单项

      设置活动配置

      选择调试配置,而不是发布配置。 重建一切,你的符号应该在那里。

      【讨论】:

      • 看...除了即使在发布版本中也可以生成符号这一事实,我会重复一遍,由于我正在使用的库,我无法生成符号。
      • 老兄——别生气——他只是想帮你。
      • 我向你道歉。在我看来,您的问题文本表明您无法使用符号构建可执行文件。我不记得看到原因是特定的库。无意侮辱。
      • 我向你道歉!无论如何,谢谢你的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 2017-06-11
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      相关资源
      最近更新 更多