WEB开发网
开发学院操作系统Linux/Unix 使用 ProbeVue 调试 C++ 应用程序 阅读

使用 ProbeVue 调试 C++ 应用程序

 2010-05-04 00:00:00 来源:WEB开发网   
核心提示: 清单 7 中的 Vue 脚本实现以下功能:在重载函数 func(包括 int 和 char 两种实例)上设置探查,使用 __arg2 和 __arg3 获取它的参数,使用 ProbeVue 调试 C++ 应用程序(8),因为它是类成员函数,在函数 spacefriend 上设置探查,使用 __a

清单 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 

上一页  3 4 5 6 7 8 9  下一页

Tags:使用 ProbeVue 调试

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接