7

将 Visual Studio 2010 与本机 C++ 结合使用。编辑 autoexp.dat 时,是否可以在调试可视化预览中使用方法调用的结果?

例如,如果我的班级是 Person,我该怎么做:

MyNamespace::Person{
  preview(
    #("FirstName=", $e->GetFirstName())
  )
}

(您可能会问为什么我不只是获取私有成员变量数据,那是因为 GetFirstName() 委托给第 3 方库方法调用,所以我无权访问数据成员。另一个原因可能是方法执行一些计算。)

4

2 回答 2

3

您可能想查看以下内容:

请参阅此处有关用户自定义功能的评论,以了解一些人对此的体验:

于 2014-09-26T06:31:23.780 回答
1

否 Visual Studio 调试器仅支持直接读取虚拟内存。支持 e->GetFirstName() 需要对 GetFirstName() 函数进行内省,如果 GetFirstName() 是非平凡的或虚拟的(更糟糕的是 GetFirstName() 可能有副作用或崩溃),这可能会非常复杂。更改 autoexp.dat 不会让您解决这个问题。

如果您真的想获得此功能,您可以添加一个新的仅调试成员函数,如 std::string *_firstName 并将其指向 GetFirstName() 在构造 Person 时,然后让 autoexp.dat 取消引用并为您显示此变量.

于 2011-06-15T22:02:23.707 回答