使用 ProbeVue 调试 C++ 应用程序
2010-05-04 00:00:00 来源:WEB开发网
清单 5. 访问参数的 Vue 脚本格式
##C++
#include "headerfile.h"
##Vue
struct space s1;
@@uftxlc++:PID:*:"space::spacefriend(space *, char *)":entry
{
String st[100];
printf("Probing spacefriend\n");
copy_userdata(__arg2, s1); # accessing argument space * here
printf("Argument s1.x = %d\n",s1.x);
copy_userdata(__arg3,st); # accessing argument char * here
printf(" Argument 2 of function spacefriend %s",st);
}
注意,在访问类成员函数的参数时,实际的参数编号从 2 而不是从 1 开始。在 ProbeVue 中,在访问类成员函数时,__arg1 引用 C++ 的 “this” 指针。因此,在清单 5 中 space * 参数是 __arg2,char * 是 __arg3。按照与 C 结构相同的方式对待 C++ 类,所以在 Vue 脚本中像访问其他结构那样访问它。
对于非类函数的参数,编号从 __arg1 开始。对于类成员函数,从 __arg2 开始。
头文件
要想访问函数的参数,需要向 ProbeVue 提供函数原型,让它知道参数的数据类型。可以在头文件中定义函数原型。本节解释如何编写头文件以及如何在 Vue 脚本中包含它。
编写头文件
正如前面提到的,头文件包含希望探查并访问其参数的函数的原型。在理想情况下,头文件应该包含所有类定义、成员函数和变量。因此,头文件应该包含函数的原型和一个虚拟的函数定义。还必须把函数名 main 改为其他独特的函数名。在 清单 8 中,main 已经改为 dummy。main 函数中的所有其他语句应该保持原状。可以使用以下 Vue 脚本语法包含头文件:
更多精彩
赞助商链接