panfei263031 2022-02-22 13:53 采纳率: 50%
浏览 161
已结题

为什么gdb中的watch命令无效?

问题遇到的现象和发生背景

交叉编译移植了gdb,在板子上用的时候,其他命令如bt、n、c、thread、r、等命令均可正常使用,但是唯独十分香的watch用不了。因为偶尔会遇到变量的值被未知的那个地方覆盖了,只能通过watch来定位,但是watch竟然刚好用不了。

问题相关代码,请勿粘贴截图

写了一个demo代码,如下:

#include<stdio.h>
#include<unistd.h>

static int g_a = 0;

void main(void)
{
        while(1)
        {
                g_a++;
                printf("g_a is %d\n", g_a);
                sleep(1);
        }
}
运行结果及报错内容

然后交叉编译,到设备上用gdb起,然后watch g_a,然后run,按说gdb会停下来,说g_a改变了,但是程序丝毫没有阻拦的往下走:

root@ibox:~# ./gdb dddd
GNU gdb (GDB) 7.11.1
.........此处省略一大堆gdb的打印..........
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from dddd...done.
(gdb) watch g_a
Hardware watchpoint 1: g_a
(gdb) r
Starting program: /root/dddd
g_a is 1
g_a is 2
g_a is 3
g_a is 4
^Xg_a is 5
^C
Program received signal SIGINT, Interrupt.
0x76f3d038 in nanosleep () from /lib/libc.so.6
(gdb) q
我的解答思路和尝试过的方法

网上类似的问题,有人说编译时加上-ggbd3就好了,但是我试了依然不行,我的Makefile如下:

CC=arm-linux-gnueabihf-gcc

MY_FLAGS=-ggdb3

dddd:
        $(CC) main.c -o $@ $(MY_FLAGS)

请哪位知道的指条明路,谢谢~

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月6日
  • 已采纳回答 2月26日
  • 创建了问题 2月22日

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果