我正在观察一个变量,该变量在单次运行期间被分配了数千个值。它被设置了多次,并且仅通过在重新分配的位置设置断点很难跟踪代码工作流程。 有没有办法将变量的所有值输出到 .txt 文件?我想在不修改实际 C++ 代码的情况下实现这一点,只需使用调试工具。
最佳答案
为了真正接近您正在寻找的内容,您需要结合 Visual Studio 的两个功能:数据断点和跟踪点。每当内存中的存储值发生变化时,数据断点允许您通知调试器。要设置数据断点,请启动调试器,然后选择调试 → 新断点 → 数据断点...:
由于我们对变量 myValue
感兴趣,因此我们将地址设置为 &myValue
,并将大小设置为 4 个字节(因为这就是 int
在 Windows 上):
现在这样就已经很酷了。但对于非侵入式日志记录,我们还将设置操作:
重要的设置是日志消息([MYSIG]
是一个任意签名,以便稍后可以过滤感兴趣的日志条目),它转储变量的值以及继续执行复选框。后者使得这种非侵入性(或低侵入性;记录大量信息确实对运行时性能产生显着影响)。
完成后,运行此代码
inline void DataTracepoint() {
volatile int myValue{ 0 };
for ( int i = 0; i < 10; ++i ) {
myValue = i;
}
}
在调试输出 Pane 中生成以下输出:
[MYSIG] myValue = 0 [MYSIG] myValue = 1 [MYSIG] myValue = 2 [MYSIG] myValue = 3 [MYSIG] myValue = 4 [MYSIG] myValue = 5 [MYSIG] myValue = 6 [MYSIG] myValue = 7 [MYSIG] myValue = 8 [MYSIG] myValue = 9
然后可以在您最喜欢的文本处理器中轻松分析此输出。
关于c++ - Visual Studio 。调试。如何将变量在运行期间拥有的所有值保存到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39789974/