是否有任何方法可以在 Visual Studio 中的模块级别设置断点,以便对特定 DLL 中定义的任何函数的任何调用(第 3 方,无源代码,无符号)将在调用函数之前触发断点?
我知道你可以中断一个函数名,但是我需要一个模块中的所有函数(我什至可以使用通配符,因为大多数 API 调用都有类似的前缀)
编辑:如果这不可能,能否生成一个调用者图,以便我可以找到我的应用程序使用的对 API 的所有调用?
最佳答案
我无法回答您原来的问题,但这可能有助于您在编辑中提出的问题。
这是我过去用来打印所有函数调用以及调用它们的位置的技巧。由于您没有第 3 方源,它不会那么干净,但您可以将日志记录语句移动到宏并使用查找/替换将函数调用替换为宏以获得相同的结果。
#ifdef ENABLE_DEBUG
#define OriginalFunction(arg) OriginalFunctionDebug(arg, __FILE__, __LINE__)
void OriginalFunctionDebug(int originalArg, char* file, int line) {
[copy/paste variable declarations since they have to be at the top]
printf("%s called by %s:%d with arg %d", __FUNCTION__, file, line, arg); // use logging of your choice here
#else
void OriginalFunction(int originalArg) {
#endif
[rest of function]
关于c - 中断对外部模块/DLL 的所有调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8482465/