在WinDbg中,我可以在没有符号的情况下使用软件断点吗?

时间:2009-10-01 12:29:25

标签: debugging visual-c++ windbg

我在使用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:如果还有什么需要解释或需要更多信息,请给我发表评论: - )

2 个答案:

答案 0 :(得分:1)

抱歉,我不允许为SO创建评论(太新)了。

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

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

可能有助于概述一下您希望程序在调试器中停止的条件。

答案 1 :(得分:0)

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

构建菜单项

设置有效配置

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