【debug】gdb
首先要编译出带调试信息的程序,加个-g参数
gdb 程序名 进入gdb模式
ulimit -c unlimied 设置core文件大小为没有限制
break 文件名 : 行号 设置断点 (甚至可以设置条件断点)info breakpoints可以查看断点信息
list first,last 列出代码(作用不大)
step 单步调试(逐语句)
next (逐过程,不进函数,直接返回执行结果)
continue 继续执行到下一个断点
print 打印变量名
watch 设置观察点
frame 切换栈帧
gdb 为所有存活的栈帧分配一个数字编号,最深帧的编号是0,被它调用的内个帧的编号就是1。这些编号子程序中是不
存在的,只不过时调试的时候被gdb用的。
关于函数帧的两个指令:
frame args
移动到args指定的栈帧中去,并打印选中的栈的信息。args可以时帧编号或者时帧的地址。如果没有args,则打印当前帧的信息。
select-frame args
gdb 可执行程序exe
进入gdb环境后
core-file core的名字
敲命令bt可以查看准确信息 (backtrace)
q退出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理