我必须跟踪一些我想跟踪的事件,以监视多线程应用程序的运行。为此,我定义了一个结构数组。每个元素都是一个跟踪记录。
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命令窗口或直接窗口使用数据创建文本文件的选项?
答案 0 :(得分:0)
是否必须是一键式导出?您可以选择全部,然后复制并粘贴到输出文件中。您可以在Watch
窗口中执行此操作,但是从Immediate
或Command
窗口中的输出将更加清晰。
您可以通过在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>