如何在windbg中设置不会停止执行程序的断点只记录调用的函数

tMJ*_*tMJ 9 windbg breakpoints

我正在调试一个Windows组件,并希望查看被调用的特定dll的所有函数(也按照它们被调用的确切顺序).我可以通过将组件附加到windbg并在所讨论bm *module_name!*dll的所有导出函数()上设置断点来实现此目的.

这按预期工作.每当调用该dll的导出函数时,windbg就会中断执行并在屏幕上打印有关被击中断点的信息.之后我可以通过按F5或给出go命令手动恢复执行.

问题: dll的某些功能必须非常快速地(立即)返回,否则组件崩溃.在这种情况下,断点会导致组件崩溃.我可以删除有问题的断点,但之后就不会有被击中的日志.

我环顾四周,发现每当遇到断点时我都可以运行命令.bm module_name!func_name ".printf \"func_name\n\";gc"但这对每个导出的函数都不可行.该DLL有大约100个导出函数.

我可以做什么来记录(在屏幕上)每个被击中的导出函数(即使断点数也可以做,如果没有别的办法可以做).我可以在printf命令中使用变量名称来打印函数名称(如果不是函数名称,还可以使用断点号)?

tMJ*_*tMJ 7

弄清楚了.感谢EdChum.

命令: bm *module_name!* ".frame;gc"