相关疑难解决方法(0)

如何使用gdb"观察"C++动态数组?

请考虑以下示例:

int size = 10, *kk = new int[size];

for (int i = 0; i < size; i++) {
    kk[i] = i;
}

delete [] kk;
Run Code Online (Sandbox Code Playgroud)

如何为整个阵列添加手表?我可以逐个添加一个手表(kk [0],kk [1] ...),但是因为我知道数组的长度是否有办法自动完成?我的意思是像kk [0..size-1]左右.

我正在使用NetBeans IDE和cygwin g ++和gdb.

c++ gdb dynamic-arrays

12
推荐指数
1
解决办法
5366
查看次数

在GDB的每一行上设置断点

有没有办法用GDB在代码的每一行设置断点?显然我不想b *addr每一行都打,所以我想知道是否有一个快速的方法来做到这一点.

编辑 请注意,我正在运行由其他人创建的二进制文件,但我无法访问源代码.不幸的是,该二进制文件尚未使用-g标志进行编译.因此,我不能单步执行代码中的每一行.

进一步编辑 正如杰森在下面指出的那样,只要您使用si或者ni,而不仅仅是s(步骤)或n(下一步),您确实可以单步执行代码.ns做工精细,不过,如果源代码被编译-g,但它通过行源代码的步骤,而不是通过每一个汇编指令步进像nisi在没有-g编译的二进制做.

gdb

9
推荐指数
1
解决办法
4060
查看次数

在gdb中跟踪对类实例/内存范围的写访问

我正在尝试调试我在C++大学课程中编写的小型操作系统.在运行时某处我的一个对象被破坏了.这似乎是由于意外写入错误的内存地址而发生的.由于我无法从纯粹的代码中找到发生这种情况的地方,我需要另一种方式.

由于这是一个操作系统,我无法附加像valgrind这样的工具,但我可以在附加了gdb的模拟器(bochs/qemu)中运行它.

在gdb中是否有一种方法可以跟踪对类实例的写访问,或者更一般的特定内存范围?我想在写入访问发生后立即中断,因此我可以验证这是否有效.

c++ debugging trace gdb

6
推荐指数
1
解决办法
4847
查看次数

标签 统计

gdb ×3

c++ ×2

debugging ×1

dynamic-arrays ×1

trace ×1