根据他们的示例,我正在尝试使用 Valgrind 拦截一个函数。
使用 gcc 构建时,我能够拦截全局函数,但是当我使用 g++ 编译相同的代码时,拦截不起作用。
我应该指定的编译器标志有什么特别的吗?
这是我的示例应用程序:
#include <stdio.h>
#include "valgrind.h"
__attribute__ ((noinline))
void foo()
{
printf("inside foo\n");
}
void I_WRAP_SONAME_FNNAME_ZU(NONE,foo)()
{
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
printf("*** Before foo()\n");
CALL_FN_v_v(fn);
printf("*** After foo()\n");
}
int main()
{
foo();
return 0;
}
使用 GCC 编译时,输出为:
*** Before foo()
inside foo
*** After foo()
但是,当使用 g++ 编译时,输出很简单
里面 foo