c++ - 在 WinDBG 中名称包含空格的重载函数处设置断点

标签 c++ debugging windbg

现在我使用 WinDBG 调试程序。这个程序调用'operator new'函数。

使用符号,可以通过符号名称​​“MSVCR90!operator new”访问此函数调用。

但是这个函数名有空格(' ')和重载两种类型。 MSVCR90!operator new(无符号整数) & MSVCR90!operator new *(unsigned int, int, char , int)

因此,我无法轻易地在此函数上设置断点。我输入了以下方法,但我输入的所有内容都失败了。

0:008> bp @!"MSVCR90!operator new"
Matched: 74b00939          MSVCR90!operator new (unsigned int, int, char *, int)
Matched: 74af3e99          MSVCR90!operator new (unsigned int)
Ambiguous symbol error at '@!"MSVCR90!operator new"'
          ^ Extra character error in 'bp @!"MSVCR90!operator new"'

0:008> bp @!"MSVCR90!operator new (unsigned int)"
Couldn't resolve error at '@!"MSVCR90!operator new (unsigned int)"'
          ^ Extra character error in 'bp @!"MSVCR90!operator new (unsigned int)"'

我最终在 'operator new' 处设置了断点,但我为此使用了偏移量。

'MSVCR90!operator new (unsigned int)' 到底有没有?

最佳答案

当您使用符号名称时,WinDbg 将查找该符号并使用关联的地址。在上面的输出中,它显示了两个匹配项及其地址:74b00939 和 74af3e99。所以只要选择给定的合适地址即可。假设您想要 MSVCR90!operator new (unsigned int),只需使用 bp 74af3e99

关于符号解析,也可以使用x命令。例如:

x MSVCR90!operator*new

这将输出相同的匹配列表及其地址。

关于c++ - 在 WinDBG 中名称包含空格的重载函数处设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34986211/

相关文章:

c++ - 帮助编译器优化分支代码序列

c++ - OpenCV 2.4.9读取空白图像

c++ - gperftools + apache + fcgi ,它不会写入文件

java - Eclipse Java 调试器源查找路径

c++ - qt鼠标事件等于触摸屏事件吗?

debugging - JTAG 如何用作调试器?

java - 我可以在 Intellij Idea 中通过 @Around 方面进行调试吗

reverse-engineering - 如何在内存中找到代表 Minesweeper 排雷布局的数据结构?

c++ - 是否可以调试使用自定义加载程序加载的 dll?

Windbg - 如何转储与给定过滤器匹配的字符串