Debug Visualizer在预览中使用成员方法/函数调用?

Use*_*ser 7 c++ debugging native debuggervisualizer visual-studio

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

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

MyNamespace::Person{
  preview(
    #("FirstName=", $e->GetFirstName())
  )
}
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*her 1

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

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