gpt4 book ai didi

c - gdb watch 指针还无效

转载 作者:太空宇宙 更新时间:2023-11-04 04:57:57 24 4
gpt4 key购买 nike

我有以下代码:

#include <stdlib.h>
#include <stdio.h>

#define SIZE 100

int* arr;

main()
{
int i;

arr = (int*)malloc(SIZE*sizeof(int));

if (arr == NULL) {
printf("Could not allocate SIZE(=%d)", SIZE);
}

for (i=0; i<SIZE; i++) {
arr[i] = 0;
}

free(arr);
}

我不想观察 arr[10] 并查看该数组元素何时被修改。

我该怎么做? gdb 表示如下:

$ gcc -g main.c
$ gdb a.out
...
(gdb) watch arr[10]
Cannot access memory at address 0x28

有没有办法告诉 gdb 监视无效内存并仅在它变为有效时停止?

PS:我有 gdb 版本 6.0、6.3、6.4、6.6、6.8、7.0 和 7.1

谢谢

最佳答案

在使用 malloc 分配内存后设置 watch 。

(gdb) b main
Breakpoint 1 at 0x401321: file w.c, line 9.
(gdb) run
Starting program: D:\Users\NeilB/a.exe
[New thread 432.0x53c]

Breakpoint 1, main () at w.c:9
9 {
(gdb)
(gdb) n
12 arr = (int*)malloc(SIZE*sizeof(int));
(gdb) n
14 if (arr == NULL) {
(gdb) watch arr[10]
Hardware watchpoint 2: arr[10]

关于c - gdb watch 指针还无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com