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

标签 c visual-studio

是否有任何方法可以在 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/

相关文章:

c - FILE* 行为在函数内部发生变化

javascript - 开发时加载本地 CSS 和 JavaScript 文件,推送到服务器时生效

visual-studio - 双击文件时如何强制 Visual Studio 2008 使用 Open 实例?

c - 在数组上下文中 int* p 和 int (*p)[] 有什么区别?

c - 不知道创建链表

c - 使用信号量时等待 fork 进程

mysql - MS SQL 数据库管理/IDE

visual-studio - Visual Studio 需要很长时间才能创建一个项目

C++:obj 文件的链接顺序重要吗?

c - 使用指针遍历数组时出现段错误