论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
物联网
›
物联网
›
Linux 利用 GDB 举行调试的常用命令与技巧 ...
Linux 利用 GDB 举行调试的常用命令与技巧
麻花痒
论坛元老
|
2025-1-21 13:51:50
|
显示全部楼层
|
阅读模式
楼主
主题
1043
|
帖子
1043
|
积分
3129
GDB(GNU Debugger)是一个功能强盛的调试工具,可以资助开发者在程序运行过程中查找和修复题目。本文将介绍如何利用 GDB 调试程序,包括常用命令、调试 core 文件和正在运行的程序。
1. GDB 常用命令
在利用 GDB 调试程序时,把握一些常用命令非常紧张。以下是一些基础命令和用法:
1.1 安装 GDB
在 Linux 系统中,利用以下命令安装 GDB:
yum -y install gdb
复制代码
大概在 Ubuntu 系统中利用:
sudo apt-get install gdb
复制代码
1.2 启动 GDB
要启动 GDB 并调试一个程序,可以利用以下命令:
gdb 目标程序
复制代码
比方,调试一个名为 my_program 的程序:
gdb my_program
复制代码
1.3 设置程序的参数
在 GDB 中,你可以利用 set args 来为程序设置命令行参数。比方:
set args 张三 西施 我是一只傻傻鸟
复制代码
这将模拟命令行参数传递给程序。假设程序的命令行参数利用 argc 和 argv 获取,执行程序时,它将利用这些参数。
1.4 设置断点
利用 break 或简称 b 命令设置断点。比方:
break 20
复制代码
该命令会在程序的第 20 行设置一个断点。你也可以为函数名设置断点:
break main
复制代码
1.5 启动程序并运行至断点
利用 run
或简称 r 来启动程序,程序会在设置的断点处停止:
run
复制代码
如果程序没有碰到断点,它会直接运行至结束。
1.6 执行一步
利用 step
或简称 s 命令可以渐渐执行当前语句,并且进入函数内部:
step
复制代码
如果你只是盼望跳过当前函数调用而不进入函数体,可以利用 next 或简称 n。
1.7 打印变量值
要查看变量的当前值,可以利用 print 或简称 p 命令:
print variable_name
复制代码
比方,查看变量 i 的值:
print i
复制代码
1.8 查看函数调用栈
利用 bt
(backtrace)命令查看当前的函数调用栈:
bt
复制代码
2. GDB 调试 Core 文件
当程序崩溃时,系统大概会生成一个 core 文件,包罗了程序的内存快照和崩溃时的状态信息。利用 GDB 可以资助分析这些文件。
2.1 生成 Core 文件
在 Linux 中,可以通过 ulimit 命令设置生成 core 文件的最大大小:
ulimit -c unlimited
复制代码
这将允许程序在崩溃时生成 core 文件。运行程序并发生崩溃后,可以利用以下命令:
gdb 程序名 core 文件名
复制代码
比方,调试一个名为 my_program 的程序和它的 core 文件:
gdb my_program
core
复制代码
2.2 利用 GDB 调试 Core 文件
调试 core 文件时,起首可以利用 bt
命令查看函数调用栈,以便了解崩溃发生的位置:
bt
复制代码
你还可以利用 print 命令查看崩溃时的变量值,以进一步分析题目所在。
3. GDB 调试正在运行的程序
GDB 也可以用于调试正在运行的程序。你可以附加到一个已经启动的进程,并及时调试它。
3.1 附加到正在运行的进程
利用 attach 命令将 GDB 附加到一个正在运行的进程。比方,如果进程 ID 为 1234:
gdb
(gdb) attach 1234
复制代码
这将使 GDB 附加到进程,接下来可以设置断点、查看变量等。
3.2 在进程中设置断点
在调试正在运行的程序时,你可以在进程中的特定位置设置断点。比方:
(gdb) break main
复制代码
这会在程序的 main 函数处设置断点。
3.3 规复程序执行
利用 continue
或简称 c 命令,可以规复程序的执行,直到碰到下一个断点为止:
continue
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
麻花痒
论坛元老
这个人很懒什么都没写!
楼主热帖
【SQL server速成之路】——身份验证及 ...
2022年安装Kali Linux最详细过程,以及 ...
ping命令 网络抓包 分析
容器开发运维人员的 Linux 操作机配置 ...
窄带传输与LoRa扩频传输技术应用方案对 ...
我今年12岁了,我喜欢打游戏,怎么能成 ...
密码学奇妙之旅、02 混合加密系统、AES ...
程序员坐牢了,会被安排去写代码吗? ...
猜
kubectl使用技巧:如何更方便地操作多 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
云原生
Mysql
分布式数据库
虚拟化与私有云
Oracle
前端开发
.Net
网络安全
程序人生
快速回复
返回顶部
返回列表