文件名称:程序变量-故障注入测试
文件大小:237KB
文件格式:PDF
更新时间:2024-07-07 18:23:23
gdb
8.2、程序变量 在 GDB中,你可以随时查看以下三种变量的值: 1、全局变量(所有文件可见的) 2、静态全局变量(当前文件可见的) 3、局部变量(当前 Scope可见的) 如果你的局部变量和全局变量发生冲突(也就是重名),一般情况下是局部 变量会隐藏全局变量,也就是说,如果一个全局变量和一个函数中的局部变量同 名时,如果当前停止点在函数中,用 print 显示出的变量的值会是函数中的局部 变量的值。如果此时你想查看全局变量的值时,你可以使用“::”操作符: file::variable function::variable 可以通过这种形式指定你所想查看的变量,是哪个文件中的或是哪个函数 中的。例如,查看文件 f2.c中的全局变量 x的值: gdb) p 'f2.c'::x 当然,“::”操作符会和 C++中的发生冲突,GDB 能自动识别“::” 是否 C++的操作符,所以你不必担心在调试 C++程序时会出现异常。 另外,需要注意的是,如果你的程序编译时开启了优化选项,那么在用 GDB 调试被优化过的程序时,可能会发生某些变量不能访问,或是取值错误码的情况。 这个是很正常的,因为优化程序会删改你的程序,整理你程序的语句顺序,剔除 一些无意义的变量等,所以在 GDB调试这种程序时,运行时的指令和你所编写 指令就有不一样,也就会出现你所想象不到的结果。对付这种情况时,需要在编