使用 ProbeVue 调试 C++ 应用程序
2010-05-04 00:00:00 来源:WEB开发网清单 7 中的 Vue 脚本实现以下功能:
在重载函数 func(包括 int 和 char 两种实例)上设置探查,使用 __arg2 和 __arg3 获取它的参数,因为它是类成员函数。
在函数 spacefriend 上设置探查,使用 __arg1 获取它的参数,因为它是非类函数。
在模板函数 GetMul(包括 int 和 float 两种实例)上设置探查,使用 __arg2 和 __arg3 获取它的参数。
在 exit 系统调用上设置探查,从而在进程退出时退出。
清单 7. Vue 脚本:class.e
##C++
#include "class.h"
##Vue
struct space s1; //declaring structure corresponding to class space
#Probing int instance of overloaded function "func"
@@uftxlc++:$__CPID:*:"space::func(int, int)":entry
{
printf("Probing space func - int instance\n");
printf("Argument1=%d\n",__arg2);
printf("Argument2=%d\n",__arg3);
}
#Probing friend function "spacefriend"
@@uftxlc++:$__CPID:*:"spacefriend(space *)":entry
{
printf("Probing spacefriend\n");
copy_userdata(__arg1, s1);
printf("Argument s1.x = %d\n",s1.x);
}
#Probing int instance of template function "GetMul"
@@uftxlc++:$__CPID:*:"space::GetMul<int>(int,int)":entry
{
printf("Probing template (int) GetMul\n");
printf("Argument1=%d\n",__arg2);
printf("Argument2=%d\n",__arg3);
}
#Probing float instance of template function "GetMul"
@@uftxlc++:$__CPID:*:"space::GetMul<float>(float,float)":entry
{
printf("Probing template (float) GetMul\n");
printf("Argument1=%f\n",__arg2);
printf("Argument2=%f\n",__arg3);
}
#Probing char instance of overloaded function "func"
@@uftxlc++:$__CPID:*:"space::func(char, char)":entry
{
printf("Probing space func - char instance\n");
printf("Argument1=%c\n",__arg2);
printf("Argument2=%c\n",__arg3);
}
@@syscall:$__CPID:exit:entry
{
exit();
}
Output :
# probevue -X ./class ./class.e
In space private func2 - int instance <-- Following this the output is from executable
I am space friend accessing x = 22
(int) Template return value = 9
(float) Template return value = 4.41
In space private func2 - char instance
Probing space func - int instance <-- Following this the output is from Probevue
Argument1=2
Argument2=10
Probing spacefriend
Argument s1.x = 22
Probing template (int) GetMul
Argument1=3
Argument2=3
Probing template (float) GetMul
Argument1=2.100000
Argument2=2.100000
Probing space func - char instance
Argument1=a
Argument2=b
更多精彩
赞助商链接