我正在尝试调试我写的一些c ++代码 它有几个函数,都在同一个c ++文件中,类似于
static void b( int i ) {
int k = i * 2;
}
static void a( int j ) {
for( int l = 0; l < j ; l++ ) {
b( l + j );
}
}
int main( void ) {
a( 4 );
return 0;
}
我在调试模式下编译了代码,并在函数b
中放置了一个断点。
代码编译良好,调试器在断点 BUT
停止
当我尝试检查局部变量k
的值时,我得到了
CXX0017:错误:未找到符号“k”
我可以看到i
的值 - 输入参数
此外,如果我单击调用堆栈中的调用函数a
,我可以检查参数变量j
和局部变量l
......
有没有人遇到过如此悲惨的情况?
答案 0 :(得分:4)
当您的断点点击并在您有机会检查它之前被摧毁时,k
可能不构造。
尝试在之后添加一行代码,其中k
正在初始化,然后在那里中断。
static void b( int i ) {
int k = i * 2;
bool bk = true; // <== BREAKPOINT HERE
}
答案 1 :(得分:1)
我明白了:我笨到腐败我的筹码。我做得非常优雅,所以我仍然可以看到“调用堆栈”,但有关特定框架中局部变量的信息已损坏。更加小心和尊重地处理记忆解决了这个恼人的问题。
感谢您John的努力。