将调试会话的值从监视窗口保存到文件

我必须跟踪一些我想跟踪的事件,以监视多线程应用程序的运行。为此,我定义了一个结构数组。每个元素都是一个跟踪记录。

enum Event { start,stop,pause };
struct A
{
    Event e;
    int x,y,z;
};

main()
{
  A a[100];
}

还有一个将事件写入数组的函数。数组a可以显示在Visual Studio的监视窗口中,尽管不是所有结构成员都可以显示:

-       a               0x008ff4bc {{e=0xcccccccc x=0xcccccccc y=0xcccccccc ...},{e=0xcccccccc x=0xcccccccc y=0xcccccccc ...},...}    A[0x00000064]
+       [0x00000000]    {e=0xcccccccc x=0xcccccccc y=0xcccccccc ...}    A
+       [0x00000001]    {e=0xcccccccc x=0xcccccccc y=0xcccccccc ...}    A
+       [0x00000002]    {e=0xcccccccc x=0xcccccccc y=0xcccccccc ...}    A

由于数组很大,并且由于手表的限制,我想将整个数组内容导出到文件中。这可以通过在正在调试的代码中添加文件导出功能来完成。但这并不方便,因为调试器只是在一个断点上,并不总是能够告诉应用程序运行导出功能。

如何导出具有所有成员值的数组?是否可以使用VS命令窗口或直接窗口使用数据创建文本文件的选项?

zsqforsap 回答:将调试会话的值从监视窗口保存到文件

是否必须是一键式导出?您可以选择全部,然后复制并粘贴到输出文件中。您可以在Watch窗口中执行此操作,但是从ImmediateCommand窗口中的输出将更加清晰。

您可以通过在C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers中创建自定义可视化工具来美化格式(使用VS的您的版本)。

这是它的外观,例如:

<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="A">
    <DisplayString>({e}:{x},{y},{z})</DisplayString>
  </Type>
</AutoVisualizer>
本文链接:https://www.f2er.com/2724440.html

大家都在问