gdb调试
- 编译
go build -gcflags "-N -l"
-
gdb调试
加载
调试out
- gdb a.out
调试core
- 生成core
ulimit -c unlimited(只对一个终端有用)
- gdb (程序名) (core名字)
调试程序
- gdb attach pid
运行
带着gui
- gdb -tui (a.out)
设置arg
- set args 运行时参数
常用
- r 开始运行
- c 运行到断点
- n 下一步
- s 进入函数
- until 跳出循环
- fin 结束函数
- bt backtrace 显示当前调用堆栈
- where 查看core目前位置的调用栈
打印
源代码打印
- list num(打印num行附近代码)
- list 打印代码,一直回车一直打
变量打印
- print (打印一切)
断点
设置
- b 11(普通断点)
- b 11 if some>=0(条件断点)
- tb 11(临时断点,只用一次失效)
删除断点
- delete (可以指定断点编号)
查看断点
- info break
多线程
查看线程信息
- info thread
切换线程
- thread id
查看调用帧
- info frame
- backtrace
显示汇编
修改布局
- layout asm
显示函数汇编
- disas /m functionname
查看目前汇编
- x/i $pc
- display /3i $pc
i line 13 disassemble 0x4004e9, 0x40050c
退出 q
dlv调试
- 进入包目录
dlv debug
- 其他和gdb差不多