gdb调试 打印输出长变量的值到外部文本里

news/2024/5/18 23:18:56 标签: 数据结构, reference, signal, delete, 存储, 工作

1. gdb调试 打印输出长变量的值到外部文本里

在gdb调试中调用:

dump memory out_alan1    pagebuf         pagebuf+nret

 

pagebuf:起始位置指针

 pagebuf+nret:结束位置指针

 

2. gdb调试正在运行的进程

http://hi.baidu.com/brady_home/blog/item/6b92aa8ffdfee2e6f01f369b.html
GDB提供了两种方式来调试正在运行的进程:一种是在GDB命令行上指定进程的PID,另一种是在GDB中使用“attach”命令。例如,开发人员可以先启动debugme程序,让其开始等待用户的输入。示例如下:

#./debugme
            Enter a string to count words:


接下去在另一个虚拟控制台中用下面的命令查出该进程对应的进程号:

# ps -ax | grep debugme
            555 pts/1 S 0:00 ./debugme


得到进程的PID后,就可以使用GDB对其进行调试了:

# gdb debugme 555
            GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
            Attaching to program: /home/xiaowp/debugme, process 555
            Reading symbols from /lib/libc.so.6...done.
            ……


3.gdb 显示数据
利用print 命令可以检查各个变量的值。
(gdb) print p (p为变量名)
whatis 命令可以显示某个变量的类型
(gdb) whatis p
type = int *

print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容:
l 对程序中函数的调用
(gdb) print find_entry(1,0)
l 数据结构和其他复杂对象
(gdb) print *table_start
$8={e=reference=’\000’,location=0x0,next=0x0}
l 值的历史成分
(gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值)
l 人为数组
人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示:
base@length
因此,要想显示在h后面的10个元素,可以使用h@10:
(gdb)print h@10
$13=(-1,345,23,-234,0,0,0,98,345,10)

 

 

小结:常用的gdb命令
backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)
breakpoint 在程序中设置一个断点
cd 改变当前工作目录
clear 删除刚才停止处的断点
commands 命中断点时,列出将要执行的命令
continue 从断点开始继续执行
delete 删除一个断点或监测点;也可与其他命令一起使用
display 程序停止时显示变量和表达时
down 下移栈帧,使得另一个函数成为当前函数
frame 选择下一条continue命令的帧
info 显示与该程序有关的各种信息
jump 在源程序中的另一点开始运行
kill 异常终止在gdb 控制下运行的程序
list 列出相应于正在执行的程序的原文件内容
next 执行下一个源程序行,从而执行其整体中的一个函数
print 显示变量或表达式的值
pwd 显示当前工作目录
pype 显示一个数据结构(如一个结构或C++类)的内容
quit 退出gdb
reverse-search 在源文件中反向搜索正规表达式
run 执行该程序
search 在源文件中搜索正规表达式
set variable 给变量赋值
signal 将一个信号发送到正在运行的进程
step 执行下一个源程序行,必要时进入下一个函数
undisplay display命令的反命令,不要显示表达式
until 结束当前循环
up 上移栈帧,使另一函数成为当前函数
watch 在程序中设置一个监测点(即数据断点)
whatis 显示变量或函数类型


http://www.niftyadmin.cn/n/1534592.html

相关文章

angular笔记_10

过滤器 currency:1:2:3 与货币相关 第一个参数是符号 第二个参数是保留小数点几位 number:1 数字 参数是保留小数点几位 lowercase 小写 uppercase 大写 limitTo:1:2 …

看懂信息检索和网络数据挖掘领域论文的必备知识总结

信息检索和网络数据领域(WWW, SIGIR, CIKM, WSDM, ACL, EMNLP等)的论文中常用的模型和技术总结 引子:对于这个领域的博士生来说,看懂论文是入行了解大家在做什么的研究基础,通常我们会去看一本书。看一本书固然是好&…

主题模型(topic model)的提出及发展历史

topic model 是一种应用十分广泛的产生式模型(generative model),在IR, NLP,ML都有广泛的应用,本文将对目前已有的topic model进行分类总结,然后选择几个代表性的topic model进行较为详细的介绍,从而理解to…

Topic Model的分类和设计原则

topic model的介绍性文章已经很多,在此仅做粗略介绍,本文假设读者已经较为熟悉Topic Medel。 Topic Model (LDA)认为一个离散数据集合(如文档集合,图片集合,为行文方便,本文统统以文…

B. 删除数据

转载于:https://www.cnblogs.com/youyuanjuyou/p/8099966.html

基于LDA的Topic Model变形

最近几年来,随着LDA的产生和发展,涌现出了一批搞Topic Model的牛人。我主要关注了下面这位大牛和他的学生: David M. BleiLDA的创始者,04年博士毕业。一篇关于Topic Model的博士论文充分体现其精深的数学概率功底;而其…

centos安装go环境和添加goproxy

export GOROOT/opt/go export GOPATH/opt/gopath export PATH$GOPATH/bin:$GOROOT/bin:$PATH# Enable the go modules feature export GO111MODULEon # Set the GOPROXY environment variable export GOPROXYhttps://goproxy.io

9家在iOS平台上收入最高的中国公司

摘要:都说移动开发热,但是真正赚到钱的有多少呢?一家网站花时间整理了一份号称“全中国最赚钱的9家iOS开发商”,虽然很多营收数据并未注明,不过根据我们的了解,这个榜单基本属实。从这9家情况来看&#xff…