中断对外部模块/ DLL的所有调用

时间:2011-12-12 23:34:10

标签: c visual-studio

有没有办法在Visual Studio中的模块级别设置断点,因此对该特定DLL(第三方,无源,无符号)中定义的任何函数的任何调用都会在调用函数之前触发断点?

我知道你可以打破一个函数名,但我需要一个模块中的所有函数(我甚至可以使用通配符,因为大多数API调用都有类似的前缀)

编辑:如果无法生成调用者图表,那么我可以找到我的应用程序使用的API的所有调用?

1 个答案:

答案 0 :(得分:0)

我无法回答您的原始问题,但这可能有助于您在编辑中提出的要求。

这是我过去用来打印所有函数调用以及调用它们的地方的技巧。由于您没有第三方源,因此它不会很干净,但您可以将日志记录语句移动到宏,并使用find / replace将宏替换为宏以获得相同的结果。

#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]
相关问题