学会Linux应用程序gdb调试操作

    Linux      PC应用程序gdb调试:

1、查看core文件参数
yinkui@yinkui-desktop:~/File_unzip/cp_module$ uli     mi   t -a

core file size          (blocks, -c) 0        //产生core文件数目,不会产生core文件

data seg size           (kby     te   s, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31042
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
    pi   pe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-     ti   me priority              (-r) 0
stack size              (kbytes, -s) 8192        //应用程序栈大小
    cpu    TI me               (seconds, -t) unlimited
max user processes              (-u) 31042
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

2、设置产生core文件大小

ulimit -c unlimited(不限制core文件的大小)

(默认不会现实PID信息,可通过以下命令修改此文件:  echo "1" > /proc/sys/kernel/core_uses_pid , 这样每次程序挂了之后会生成类似 core.8909(8909是当时的进程号), 效果就是后续生成的core文件不会覆盖之前生成的core文件。)

3、产生段错误之后,查看进程信息

gcc -g test.c -o test (设置gdb调试)

ls -l core.*

4、使用gdb调试core文件之前操作

查看core文件信息:file core

5、使用gdb调试core文件

gdb --core=core.PID

(gdb)bt(第一次不会出现堆栈信息)

(gdb)file ./a.out(运行程序)

(gdb)bt(backtrace信息出现)

(可直接使用命令:ulimit -a; ulimit -c unlimited;ulimit -a;echo "1" > /proc/sys/kernel/core_uses_pid)

Linux     arm   应用程序arm-XXXX-gdb调试:

1、查看core文件参数
yinkui@yinkui-desktop:~/File_unzip/cp_module$ ulimit -a

core file size          (blocks, -c) 0        //产生core文件数目,不会产生core文件

data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31042
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-  TI me priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu  TI me               (seconds, -t) unlimited
max user processes              (-u) 31042
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

2、设置产生core文件大小

ulimit -c unlimited(不限制core文件的大小)

(默认不会现实PID信息,可通过以下命令修改此文件:  echo "1" > /proc/sys/kernel/core_uses_pid , 这样每次程序挂了之后会生成类似 core.8909(8909是当时的进程号), 效果就是后续生成的core文件不会覆盖之前生成的core文件。)

3、编译程序选项

加入gdb可调试选项 arm-linux-XXX -g test.c -o test

4、构建GDB+GDB server nfs调试方法

(1)确保arm开发板与主机支持nfs功能,设置开发板和主机在同一网段,并设置共享目录(如/mnt/nfs)。

(2)将编译器对应该的gdbserver和test(可执行文件)拷贝到共享目录(/mnt/nfs),修改应用程序和 gdbserver权限为777.

(3)通过telnet或者minicom登陆到开发板,挂在nfs文件系统:mount -t nfs 主机IP:/mnt/nfs(共享目录) /home/root/modbus_rtu_slave(开发板目录) -o nolock

(4)进入共享目录 运行gdbserver建立远程调试server(格式为: ./gdbserver 主机IP:建立连接的端口号 可执行文件其中端口号一般1024以上没有占用即可】,如下)

./gdbserver 10.10.51.47:5000 test

(5)在主机目录下运行可执行程序:

arm-linux-gdb test

---》target remote 10.10.51.33:5000    (进入gdb调试后运行命令,连接gdbserver)

注释:

set solib-absolute-prefix与set solib-search-path命令分别用于设置GDB共享库查找路径前缀与共享库查找路径,以阻止GDB查找宿主机上的库。若不指定这些路径,远程调试过程中GDB加载了宿主机的库,会出现诸如“warning: GDB     can   't find the start of the func  TI on at 0x******”与“Cannot find bounds of current function”等错误提示。



学会Linux应用程序gdb调试操作_设计制作_可编程逻辑
37
22
0
99

相关资讯

  1. 1、《我不是药神》被人物原型斥不人道,观众却为徐峥发声:感动哭了717
  2. 2、郭德纲不玩虚的!德云社自制电视剧官微上线,男主角人选会是谁?3709
  3. 3、拍《少林足球》时需4万群演,周星驰用一个办法,结果没花一分钱1375
  4. 4、《金刚狼2》演东京爱情故事列车之巅大战获赞1905
  5. 5、《追龙2》杀青即将上映,刘德华退出请来4大影帝,网友:60亿1128
  6. 6、考古5年前播出的《青云志》,成毅、任嘉伦是配角,当时没人注意477
  7. 7、吴孟达去世!周星驰悼念无法接受,从艺48年终成一代金牌配角3447
  8. 8、疯狂血腥!隐私泄露引发全镇屠杀!惊悚片《暗杀国度》预告5029
  9. 9、林志玲言承旭被曝真正婚期?世纪复合还是未有定论1461
  10. 10、古天乐等她16年,与富豪恋爱却偿还巨额债务,年过半百依旧单身2844
全部评论(0)
我也有话说
0
收藏
点赞
顶部