gdb中的条件显示
conditional display in gdb
我正在使用gdb调试一些c++代码。目前,我正在查看的代码通过指针数组进行迭代,这些指针要么是指向某个对象的指针,要么是NULL指针。
如果我只是display list[index]->member
,当list[index]为空时它会抱怨。是否只有在list[index]不为null时才显示成员?我知道你可以设置条件断点(condition <bp-num> <exp>
),但我不确定这会有什么帮助。
有问题的代码是:
for (int i=0;i<BSIZE*BSIZE;i++){
if (vms[i]==target) {valid=true; break;}
}
其中vms是指针数组。
由于display
接受任意表达式,您可以尝试以下display
命令:
display (list[index]) ? list[index]->member : "null"
我不确定这是否能很好地满足你的需求——你仍然会得到一个展示,但这不会是抱怨。
基本上条件是这样工作的:
#include <iostream>
int main() {
for (int i=0; i<10; ++i) {
std::cerr << i << std::endl;
}
}
你可以这样调试它:
(gdb) break 5
Breakpoint 1 at 0x100000d0e: file foobar.cpp, line 5.
(gdb) condition 1 i==3
(gdb) r
Starting program: /private/tmp/foobar
Reading symbols for shared libraries ++. done
0
1
2
Breakpoint 1, main () at foobar.cpp:5
5 std::cerr << i << std::endl;
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 在没有太多条件句的情况下,我如何避免被零除
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 基于多个条件处理地图中的所有元素
- 条件constexpr函数
- 无论条件是否为true,if总是在c++中执行
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 基于模板值的条件变量
- 程序崩溃并显示"std::out_of_range"错误
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 如果满足嵌套条件,则计算结果未显示结果C
- CUDA内核函数似乎显示了竞争条件,尽管racecheck显示了0个竞争条件
- IDE条件块高亮显示
- 显示条件有问题?(列表中的对象)
- 在sentinel使用条件语句结束循环后显示最大值
- gdb中的条件显示