gdb初步窥探
本文是通过学习左耳朵皓帝的文章,详见:http://blog.csdn.net/haoel
1.使用gdb
gdb主要是用来调试c和c++程序,首先在编译前我们先把调试信息加到可执行程序当中,使用参数 -g 可以实现这一点。
dzhwen@deng:~/first$ gcc -g tst.c -o tst
dzhwen@deng:~/first$ g++ -g tst.cpp -o tst
2.启动gdb
1.我们一般使用:gdb + 程序名字来启动gdb。
dzhwen@deng:~/first$ gdb tst
当然也不乏其他方法:
2、gdb <program> core
用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。
3、gdb <program> <PID>
如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。
3.常见的gdb
1.help : 查看常见的命令帮助
(gdb) help
List of classes of commands: aliases -- Aliases of other commands
breakpoints -- Making program stop at certain points
data -- Examining data
files -- Specifying and examining files
internals -- Maintenance commands
obscure -- Obscure features
running -- Running the program
stack -- Examining the stack
status -- Status inquiries
support -- Support facilities
tracepoints -- Tracing of program execution without stopping the program
user-defined -- User-defined commands Type "help" followed by a class name for a list of commands in that class.
Type "help all" for the list of all commands.
Type "help" followed by command name for full documentation.
Type "apropos word" to search for commands related to "word".
Command name abbreviations are allowed if unambiguous.
2.list,简写l:列出源码
(gdb) list
{
sum += i;
}
return sum;
} int main()
{
int i;
long result = ;
3.回车:重复上一次的命令
(gdb)
for(i = ;i <= ;++i)
{
result += i;
} printf("result[1-100] = %ld\n",result);
printf("result[1-250] = %d\n",func());
return ;
}
4.break + 数字 或者 break + 函数名 —— 设置断点
(gdb) break
Breakpoint at 0x804841a: file tst.c, line .
(gdb) break func
Breakpoint at 0x80483ea: file tst.c, line .
5.info + 信息 —— 查看各种信息
(gdb) info break —— 查看断点信息
Num Type Disp Enb Address What
breakpoint keep y 0x0804841a in main at tst.c:
breakpoint keep y 0x080483ea in func at tst.c:
6.run(简写r)—— 运行程序,遇到断点自动中断。
(gdb) run
Starting program: /home/dzhwen/first/tst Breakpoint , main () at tst.c:
long result = ;
7.next(简写n) —— 单条语句执行。
(gdb) next
for(i = ;i <= ;++i)
8.continue —— 继续执行(直到下一个断点中止)
(gdb) continue
Continuing.
result[-] = Breakpoint , func (n=) at tst.c:
int sum = ,i;
9.print(简写p) + 变量名 —— 打印变量的值,print命令简写。
(gdb) p sum
$ =
(gdb) n
for(i = ;i < n;++i)
(gdb) p i
$ =
10,bt —— 查看程序堆栈(包括main函数和其他调用的函数)
(gdb) bt
# func (n=) at tst.c:
# 0x08048461 in main () at tst.c:
11.finish —— 运行至函数退出
(gdb) finish
Run till exit from # func (n=) at tst.c:
0x08048461 in main () at tst.c:
printf("result[1-250] = %d\n",func());
Value returned is $ =
12.quit(简写q) —— 退出gdb
(gdb) quit
gdb初步就这些了吧,多多指教!
gdb初步窥探的更多相关文章
- 初步窥探Git
码农之路恒久远,学习向上是真谛啊!在学习的过程中,相信大家或多或少都接触到Git这个东东.它到底是什么呢,有什么作用呢,为什么它会那么火呢?带着这些一连串的疑问,决心去揭开它的庐山真面目. 在软件开发 ...
- gdb 初步学习记录
客户有一段代码,一个死循环, 里面就一个 times(NULL) 函数,以及一个usleep, 运行了10分钟左右就会出现段错误. 现在用 gdb 调试看一下是哪一步出现了问题. 在Linux 虚拟机 ...
- gcc初步窥探
由于没有上过Linux编程这门课,所以Linux学得很水啊!!用来用去都是ls -al ; cd .. ;这些渣命令,尤其gcc都不知道什么东西来的,所以先学一下吧. 一.程序的编译过程 对于GUN编 ...
- DCOM初步窥探二
1.COM进程透明性表现在“组件对象和客户程序可以拥有各自的空间,也可以共享同一个进程空间”. COM负责把客户的调用正确传到组件对象中,并保证参数传递的正确性. 组件对象和客户代码不必考虑调用传递的 ...
- dcom初步窥探一
一.问题带入: 从delphi 5开始,有许多人都面临过这样的问题:com应用开发出来并且在本机上运行一切正常,但是一旦分发出去实施远程访问时,就无法正常运行了.我自己有段时间在看到“拒绝访问”错误提 ...
- python异步初步窥探
1.异步之难:因为其执行吮吸不可预料,当下正要发生什么事件不可预料. 程序下一步行为往往依赖上一步值执行结果,如何知晓上次异步调用已完成并获取结果, 回调成了必然选择,那又 ...
- Maven整理笔记の初步窥探
第一部分:引言 Maven是一款跨平台的项目管理工具,作为Apache组织的一个开源项目,主要服务于基于java平台的项目构建.依赖管理和项目信息管理. 项目构建:编译.运行单元测试.生成文档.打包和 ...
- Gradle学习系列(一)
今天就开始学习Gradle构建了,听说很牛X.本篇内容就带领我初步窥探Gradle的世界. 1.什么是Gradle 相信之前都接触过用Ant或者Meavn进行项目的构建,两者各有千 ...
- socket网络编程快速上手(二)——细节问题(4)
5.慢系统调用及EINTR 还记得前面readn和writen函数么?里面有个EINTR,现在就来谈谈这个,这个很重要. Linux世界有个叫信号的东西,感觉他就像一位隐士,很少遇到他,而他又无处不在 ...
随机推荐
- 更改jenkins的默认工作空间并迁移插件和配置数据
最近刚使用阿里云ECS centos服务器,购买的是40G的系统盘,60G的数据盘. 昨天在查看服务器磁盘空间的时候,偶然发现 /dev/vda1 下面40G的空间已使用17G, 因为服务器才开始使用 ...
- UE4官方行为树快速入门文档解析和修改
近学习了UE4官方文档的行为树快速入门指南,发现里面的部分逻辑稍稍有点混乱和重叠,于是加入了自己的想法,修改了部分行为树逻辑,优化了其AI寻路能力. 初始的基本操作和资源创建同官方文档一样:1个Fol ...
- LintCode——第K大元素
第K大元素:在数组num中找到第k大的元素(可以交换数组中的元素的位置) 样例: 数组 [9,3,2,4,8],第三大的元素是 4 数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4 ...
- webstorm开发微信小程序代码提醒(webstorm开发工具)
使用了微信提供的开发工具是真心难用,卡顿厉害.中英文切写注释换相当不爽.还没办法多开窗口,相信大家也遇到过这种现象. 下边我们介绍下webstorm来开发微信小程序的一些配置: File---sett ...
- ubuntu 12.04下 ns3的下载 安装
这个的内容我主要是参考了 http://blog.sina.com.cn/s/blog_7ec2ab360102wwsk.html 这个链接的学习,基本上过程没有出现的问题. 就是这个链接少了测试的一 ...
- 0302-对IT行业的感思
在参考并分析了2014行业排名和IT行业的就业分析后,给我的第一体会就是:如今的IT行业,是一个机会与挑战并存的行业. 先说机会. 从行业排行相关资料不难看出,现在是一个信息与大数据引领一切的时代,电 ...
- 读C#程序
阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...
- 『编程题全队』Alpha阶段发布说明
1. 这一版本的功能 (1)管理个人的任务事项,管理用户的提醒事项,提供一个简洁的操作界面,将其分类为全部.今天.明日.最近七天.更远.还有已完成,方便用户进行事务管理和整理. (2)提供一个便捷的备 ...
- Cisco Packet Tracer 交换机 2950-24 配置
大步骤1:设置交换机名字.特权模式口令.本地管理口令.远程登入口令 Switch>en 进入特权模式 Switch#conf t 进去全局配置模式 Enter configurati ...
- 【题解】 bzoj1911: [Apio2010]特别行动队 (动态规划+斜率优化)
bzoj1911,懒得复制,戳我戳我 Solution: 线性DP(打牌) \(dp\)方程还是很好想的:\(dp[i]=dp[j-1]+a*(s[i]-s[j-1])^2+b*(s[i]-s[j-1 ...