如何调试C++;打印调试更改程序行为时的代码 我正在使用一个相当成熟的C++项目(10年的开发,150 K+SLoc,3K+测试用例)。我们最近发现,当放入一条看似无辜的打印语句时,程序行为会发生意外的变化(std::当您不打印时会发生什么

如何调试C++;打印调试更改程序行为时的代码 我正在使用一个相当成熟的C++项目(10年的开发,150 K+SLoc,3K+测试用例)。我们最近发现,当放入一条看似无辜的打印语句时,程序行为会发生意外的变化(std::当您不打印时会发生什么,c++,debugging,gcc,clang++,C++,Debugging,Gcc,Clang++,如何调试C++;打印调试更改程序行为时的代码 我正在使用一个相当成熟的C++项目(10年的开发,150 K+SLoc,3K+测试用例)。我们最近发现,当放入一条看似无辜的打印语句时,程序行为会发生意外的变化(std::当您不打印时会发生什么?所有3个版本的行为是否相同?在我们公司,我们使用的一种技术是使用位标志来指示已执行的代码路径,而不是打印语句,但这是一个非常费力的过程,需要在之后解码,所以您设置标志,然后打印一次。这是必需的红色由于iocompletion端口的低延迟和监视

如何调试C++;打印调试更改程序行为时的代码
我正在使用一个相当成熟的C++项目(10年的开发,150 K+SLoc,3K+测试用例)。我们最近发现,当放入一条看似无辜的打印语句时,程序行为会发生意外的变化(std::当您不打印时会发生什么?所有3个版本的行为是否相同?在我们公司,我们使用的一种技术是使用位标志来指示已执行的代码路径,而不是打印语句,但这是一个非常费力的过程,需要在之后解码,所以您设置标志,然后打印一次。这是必需的红色由于iocompletion端口的低延迟和监视网络数据包的行为,我有兴趣了解替代技术实际的打印语句是什么?它真的只是
你能设置一个条件断点(或中止)吗在可以检测到损坏并按照AShelly的建议进行追溯的地方。在缩小范围的同时,继续提前推送断点/观察点/断言。接受反汇编。您是否在程序中运行多个线程?如果是,优化级别和额外的打印/cout会影响线程执行顺序并导致此问题如果您有一个或多个数据争用,则会出现这种问题。由于线程问题通常是最复杂的,要查找/解决它,如果其他任何问题都有效,请尝试“英特尔线程检测器”或任何其他线程检测器!