假设我有一个复杂的 C++ 应用程序,我需要使用大量变量进行调试。我想避免使用std::cout
和printf
方法(下面有解释原因)。
为了解释我的问题,我写了一个最小的例子chrono
(这个程序fps
随着时间的推移计算它的 while 循环并递增i_times
计数器直到它达到 10k):
#include <chrono>
using chrono_hclock = std::chrono::high_resolution_clock;
int main(int argc, char** argv){
bool is_running = true;
float fps;
int i_times=0;
chrono_hclock::time_point start;
chrono_hclock::time_point end;
while(is_running){
start = chrono_hclock::now();
// Some code execution
end = chrono_hclock::now();
fps=(float)1e9/(float)std::chrono::duration_cast<std::chrono::nanoseconds>(end-start).count());
if(++i_times==10000) is_running=false;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想调试这个程序并随着时间的推移不断观察fps
和i_times
变量,而不停止执行。
当然,我可以简单地使用std::cout
,printf
或其他方法来输出变量值,stdout
在调试时将它们重定向到文件或文件,这些对于简单类型来说是可以的,但是我有多个变量,其数据类型是基于结构的,这会令人毛骨悚然,而且耗时和代码膨胀来编写指令来打印它们中的每一个。此外,我的应用程序是使用 RTSP 协议进行流式传输的实时视频/音频 H.264 编码器,并且在断点处停止意味着在我的其他解码器应用程序中可视化工件,因为编码器无法跟上解码器(因为编码器遇到了断点)。
我该如何解决这个问题? …