文章目录
GDB
GDB是Linux下的调试工具,可以调试C、C++、Go、java等语言
GDB提供了以下四个功能:
- 程序启动时,可以按照自定义的要求运行程序,如设置参数和环境变量
- 可以让被调试的程序在所指定的代码处暂停运行,并查看当前运行状态(如当前变量的值,函数的执行结果),即支持断点调试
- 当程序被停止时,可以查看当前程序中的变量的状态
- 在程序执行过程中,可以改变某个变量的值,还可改变代码的执行顺序
要使用gdb调试,必须在源代码生成二进制程序的时候,加上 -g
选项,release 模式,如果没有 -g
,将看不见程序的函数名、变量名,所替代的全是运行时的内存地址
可以通过 readelf -S 可执行文件 | grep debug
和 file 可执行文件
查看某个二进制文件有没有调试信息,如下红色框是调试信息
启动 GDB 的方法
-
gdb program
:调式方式启动运行无参程序 -
gdb program core
:用 GDB 同时调试一个运行程序和 core 文件,core 是程序非法执行后 core dump 后产生的文件# 查看 limit (base) china@china:~$ ulimit -c 0 (base) china@china:~$ ulimit -a real-time non-blocking time (microseconds, -R) unlimited core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 127327 max locked memory (kbytes, -l) 4084144 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 127327 virtual memory (kbytes, -v) unl