`
feipigwang
  • 浏览: 744768 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
文章列表
七、设置显示选项 GDB中关于显示的选项比较多,这里我只例举大多数常用的选项。 set print address set print address on 打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。系统默认为打开的,如: (gdb) f #0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") at input.c:530 530 if (lquote != def_lquote) set print address off 关闭函数的参数地址显示 ...
改变程序的执行——————— 一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调试你的程序,比如,你可以在程序的一次运行中走遍程序的所有分支。 一、修改变量值 修改被调试程序运行时的变量值,在GDB中很容易实现,使用GDB的print命令即可完成。如: (gdb) print x=4 x=4这个表达式是C/C++的语法,意为把变量x的值修改为4,如果你当前调试的语言是Pascal,那么你可以使用Pascal的语法:x:=4。 在某些时候,很有可能你的变量和GDB中的参数冲突, ...
查看栈信息————— 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息。 下面是一些查看函数调用栈信息的GDB命令: backtrace bt 打印当前的函数调用栈的所有信息。如: (gdb) bt #0 func (n=250) at tst.c:6 #1 0x08048524 in main (argc=1, argv=0xbffff674) at tst.c:30 #2 0x400409ed in __libc_start_ma ...
查看运行时数据——————— 在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是: print <expr> print /<f> <expr> <expr>是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),<f>是输出的格式,比如,如果要把表达式按16进制的格式输出,那么就是/x。一、表达式 print和许多GDB的命令一样,可以接受一个表达式,GDB会根据当前的程序运行的数据来计算这个表达式,既然是表达式, ...
GDB的命令概貌——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> gdb GNU gdb 5.1.1 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under ...
用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环 ...
< 序言 >———— 几年前,当我确定我的发展方向是软件开发时,给自己订下的三步曲是:软件编程、软件设计、软件工程。随着对既定目标的越来越近的时候,我却出现了一种困扰我的忧虑。 记得两年前开始的一个正规 ...
< 世界观的重生 >———————— 这本书叫《自适应软件开发》,封面上写着“尤其适用于紧张、高度竞争和经常变更的软件项目”,其实这是片面的,这本书所表达的思想应该是“适应于人类的一切活动,大则包括社会 ...
< 混乱边缘的繁荣 >————————— 书中是以“混沌”作为术语,我觉得有些拗口,所以改成“混乱”。 在现在的软件开发中,软件工程协会所制定的能力成熟度模型(CMM)被誉为圣杯,并在当今的世界中大行其道, ...
< 领导—协作 >——————— 我们生活的这个世界是一个强制秩序的年代,为了保持稳定,我们的领导人以发布命令的方式指使着我们,并对我们的日常活动进行控制。正规软件工程中的项目经理,也正如我们的大多数中 ...
< 预测—协作—学习 >—————————— 这是自适应的模型的。“预测—协作—学习”不断迭代,从而让团队不断进化,不断适应多变的环境。 [预测]——就是对目标做一个分析,给出一个大的方向,但不要太具体,但 ...
< 边角料 >————— 《自适应软件开发》是一本很晦涩的书,简直是很难读,我很同情翻译人员的痛苦,我相信即使是英文版的,也是难懂,对于书中的许多地方,我也是揣摩猜测。可能会和书中的内容大相径庭,这点可能类似于爱因斯坦的《相对论》这类思想高深的书,很难让人明白。不过当你忍着痛苦,细细得揣摩书中的思想和方法,并读完整本书后,你会发现这似乎不是一本软件工程的书,这好像是一本哲学书,并会为之有一种激动不已的感觉。并写下这篇文章,希望和大家共享,并希望和大家交流学习。 《自适应软件开发》它并不否定传统的软件工程,只是把原有的结构重新组织了一下。所谓戏法人人都会变,只是玩法不同。下棋的规则 ...
28、||和&&的语句执行顺序————————————条件语句中的这两个“与”和“或”操作符一定要小心,它们的表现可能和你想像的不一样,这里条件语句中的有些行为需要和说一下: express1 || express2 先执行表达式express1如果为“真”,express2将不被执行,express2仅在express1为“假”时才被执行。因为第一个表达式为真了,整个表达式都为真,所以没有必要再去执行第二个表达式了。 express1 && express2 先执行表达式express1如果为“假”,express2将不被执行,express2仅在e ...
16、把相同或近乎相同的代码形成函数和宏————————————————————— 有人说,最好的程序员,就是最喜欢“偷懒”的程序,其中不无道理。 如果你有一些程序的代码片段很相似,或直接就是一样的,请把他们放在一个函数中。而如果这段代码不多,而且会被经常使用,你还想避免函数调用的开销,那么就把他写成宏吧。 千万不要让同一份代码或是功能相似的代码在多个地方存在,不然如果功能一变,你就要修改好几处地方,这种会给维护带来巨大的麻烦,所以,做到“一改百改”,还是要形成函数或是宏。 17、表达式中的括号————————— 如果一个比较复杂的表达式中,你并不是很清楚各个操作符的忧先级,即使是 ...
11、出错信息的处理—————————你会处理出错信息吗?哦,它并不是简单的输出。看下面的示例: if ( p == NULL ){ printf ( "ERR: The pointer is NULL\n" ); }告别学生时代的编程吧。这种编程很不利于维护和管理,出错信息 ...
Global site tag (gtag.js) - Google Analytics