gdb

1. 启动gdb调试

1. 编译程序

程序编译时需要附加调试信息-g,并关闭优化-O0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ gcc -g -o helloworld helloworld.c
$ gdb helloworld
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
……
Reading symbols from xxx/helloworld...done.
#如果不带-g,即gcc -o helloworld helloworld.c,则输出
Reading symbols from xxx/helloworld...(no debugging symbols found)...done.
#编译命令带-g生成程序后,可以使用Linux的strip命令移除该程序的调试信息
#使用strip命令之前
-rwxr-xr-x. 1 root root 12416 Sep 8 09:45 helloworld
#使用strip命令之后,文件大小变小(12416->6312),此时再用gdb启动该程序,则会返回no debugging symbols found
$ strip helloworld
-rwxr-xr-x. 1 root root 6312 Sep 8 09:55 helloworld

2. 启动调试

查看更多