我写了一个systemtap脚本来剖析C++程序。在systemtap脚本中,我想提取一个类成员。systemtap用户字符串复制错误
下面是一个C++类的定义:
class CFldOrder
{
public:
ByteArray cust_no;
};
class ByteArray
{
public:
const char* get_value(){return buf;}
private:
char* buf[255];
};
这里是SystemTap的脚本的代码片段:
probe process("/trade/ans_bu").statement("*@entrust.cpp:6614")
{
g_custno = @cast(FldOrder, "CFldOrder")->cust_no->buf
}
当脚本运行时,它没有在这个探头,并说“用户字符串复制错误在地址0x0000075“。我想这意味着“@cast(FldOrder,”CFldOrder“) - > cust_no-> buf”不是有效的地址。
如果我用gdb调试这个程序并在位置“entrust.cpp:6614”中断,FldOrder.cust_no.buf显示正确。
我该如何修复脚本?