gdb 解core

gdb 解core

1.查看core文件:/opt/compiler/gcc-4.8.2/bin/gdb bin/ /home/coresave/bak/core文件

2.查看堆栈信息:bt

3.红框表示堆栈的帧frame,定位到是哪个帧出问题就直接跳到该帧:f num(前面的数字)

4.查看所有线程:info(i) threads

5.找到对应的线程id后,利用thread <num>切换到该线程

6.打印出当前函数的参数名及其值:info args

7.打印出当前函数中所有局部变量及其值:info locals

8.查看当前函数的异常处理信息:info catch

9.查看源代码在内存中的地址:info line后面可以跟“行号”,“函数名”,“文件名:行号”,“文件名:函数名”,这个命令会打印出所指定的源码在运行时的内存地址:info line tst.c:func 

10.查看函数func的汇编代码:disassemble func

11.看当前程序的运行数据:p(or print) 变量名(p/x是让其以十六进制的格式输出)

  • x 按十六进制格式显示变量。 
  • d 按十进制格式显示变量。 
  • u 按十六进制格式显示无符号整型。 
  • o 按八进制格式显示变量。 
  • t 按二进制格式显示变量。 
  • a 按十六进制格式显示变量。 
  • c 按字符格式显示变量。 
  • f 按浮点数格式显示变量。 

12.gdb支持以下操作符

  • 是一个和数组有关的操作符。 

        “@”的左边是第一个内存的地址的值,“@”的右边则你你想查看内存的长度。

         例如:*array@len

  • :: 指定一个在文件或是一个函数中的变量。 
  • {} 表示一个指向内存地址的类型为type的一个对象。 

13.栈向上or向下n层:up n、down n