我在使用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:如果还有什么需要解释或需要更多信息,请给我发表评论: - )答案 0 :(得分:1)
抱歉,我不允许为SO创建评论(太新)了。
具体了解可用信息有点棘手。我想有可能没有正确计算断点地址。鉴于这种情况,我会尝试将断点地址计算为:模块启动+代码启动+代码偏移地图文件。也许这就是你所做的(除非我弄错了;-))
另外值得注意的是,bp地址需要在指令边界上对齐。如果没有,那么它将无法正确设置。如果您不得不猜测尝试将断点加入特定函数,那么这是可能的。
可能有助于概述一下您希望程序在调试器中停止的条件。
答案 1 :(得分:0)
要添加符号,您需要进行调试构建
构建菜单项
设置有效配置
选择调试配置,而不是发布配置。 重建一切,你的符号应该在那里。