在重载函数中设置断点,该名称包含WinDBG中的空格

时间:2016-01-25 06:15:27

标签: c++ debugging windbg

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

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

但是这个函数名称有空格('')并且有两种类型的重载。 MSVCR90!operator new(unsigned int)& 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)' ?

1 个答案:

答案 0 :(得分:0)

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

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

{{1}}

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