Wal*_*ter 5 c++ debugging compiler-flags c-preprocessor
正如问题所解释的那样:我想添加一些仅在程序附加到调试器时运行的调试代码。我想这个flag或pre-processor变量对于每个编译器都会不同......
就我而言,我将 Microsoft Visual Studio 2010 与 C++ 一起使用。
我还在家里的另一台运行 Ubuntu 10.4 和 C++ 的计算机上使用 Eclipse。
这个问题可能意味着以下两件事之一:
这可以通过使用与编译器相关的预处理器宏来解决(例如,Win32 CRT 的 _DEBUG)。
这可以通过几种不同的方式来解决。
全局布尔变量
我发现的一种方法是定义一个初始化为 的全局布尔变量false,如下所示:
bool gDebug = false;
Run Code Online (Sandbox Code Playgroud)
当我使用调试器附加到代码时,中断代码并gDebug通过true“监视”窗口覆盖。然后,您可以添加在设置为 true 时有条件运行的代码:
if (gDebug)
{
// Debugger is attached, so run this code
// ...
}
Run Code Online (Sandbox Code Playgroud)
注册表项
定义一个DWORD初始化为 的注册表值,但您可以通过注册表编辑器0覆盖。1
然后,您可以将此注册表值设置为调试代码的条件。1. 这可能是一个更好的替代方案,因为您可以从外部控制该值,而无需中断调试器以在适当的时间设置全局变量。