当前位置:  技术问答>linux和unix

gdb中define命令如何永久有效

    来源: 互联网  发布时间:2016-05-29

    本文导语:  在LINUX中用GDB调试有VECTOR的变量时,想把VECTOR的某个成员打印出来,可以用如下命令定义一个专门来打印VECTOR成员的命令: define print_vector print $arg0._M_impl._M_start[$arg1] end 这样,print_vector list 2 就可查看vector list的...

在LINUX中用GDB调试有VECTOR的变量时,想把VECTOR的某个成员打印出来,可以用如下命令定义一个专门来打印VECTOR成员的命令:
define print_vector
print $arg0._M_impl._M_start[$arg1]
end

这样,print_vector list 2 就可查看vector list的第三个元素。

可是当关闭gdb重新打开后,这个命令失效了,怎么办

|

有个比较笨的方法,你可能不喜欢,
也不知道复杂的命令行不行:

看例子:

souldump@BirdSky:~/bin> cat ether # eher 为保存命令的文件
step
step
step
step
step

souldump@BirdSky:~/bin>


BirdSky:/home/souldump/bin # gdb de
GNU gdb 6.4
Copyright 2005 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 certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i586-suse-linux"...Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) b 58
Breakpoint 1 at 0x804881c: file de.c, line 58.
(gdb) run
Starting program: /home/souldump/bin/de
Hi, I get gateway address 10.0.119.254
0:11:bb:3d:e6:ff
The gateway MAC we RETURN is :0:11:bb:3d:e6:ff

Breakpoint 1, main () at de.c:58
58 bind_gateway_mac((struct sockaddr *)&gateway, &hardaddr);
(gdb) shell cat ether #用鼠标选择,把输出内容复制,然后再粘贴上来就可以了
step
step
step
step
step

(gdb) step
bind_gateway_mac (gwip=0xbfa10ef4, hwp=0xbfa10ee4) at de.c:215
215 sockfd = socket(AF_INET, SOCK_DGRAM, 0);
(gdb) step
216 if (sockfd sa_family = AF_INET;
(gdb)

.........

就是先调用shell显示内容,然后在把显示的内容复制再粘贴到gdb中,
不过不能用快捷键了,CTRL+C是信号了。
你用鼠标好了。要是你的控制台不支持鼠标就没办法了。

|
我的办法是把
define print_vector 
print $arg0._M_impl._M_start[$arg1] 
end
写在一个文件里,启动gdb时用-x选项加载这个文件,就不用重新定义了

|
....我也想知道...

|
把这个命令写到~/.gdbinit这个文件中,每次gdb启动都会自动加载这个文件的内容

    
 
 

您可能感兴趣的文章:

  • gdb 如何调试带命令行参数的程序 如 gdb a.out arg1,arg2
  • gdb调试时命令行参数如何输入?比如main(int argc,char **argv)中,我要把一个filename作为argv[1]传入给gdb调试
  • gdb的start命令不能用?求解
  • 用gdb调试时如何将命令行参数传入?
  • 与GDB的commands命令有关
  • gdb调试问题,关于list命令的
  • gdb是什么命令跳到下一个断点
  • gdb下的watch命令没有作用,求助
  • gdb调试时next命令为什么不走return语句?
  • linux gdb 没有符号表被读取。请使用 "file" 命令。
  • gdb调试出现奇怪问题 , 怎么老围着 init.c 转? list , break 命令失效?!
  • GDB调试中遇到的问题: 用list命令不能列出源代码? 提示信息: 符号表不被装载。使用"文件" 命令 ???
  • [gdb]print命令的结果怎么用省略号代替了。。。。
  • gdb调试中command命令是做什么用的
  • gdb调试命令的使用及总结
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何使用linux下gdb来调试python程序
  • 使用gcc gdb的大牛进来说说gdb的强大之处在哪。我刚学linux了,vim我确实体会到了其强大之处。而对gcc gdb,体会不到gdb这工具的强大之处。
  • 请教 make gdb-6.4 出现 make[4]: Entering directory `/tmp/gdb-6.4/gdb/doc'
  • GDB调试 GDB挂了。。。
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • linux gdb: 我在一台机器上编译的程序用GDB可以调试,把程序放到另外一台机器上调试,调试信息就没有了 这是什么原因呢?
  • 写调试器(像gdb)的一般思路是什么
  • gdb 使用问题请教
  • gdb的问题,请教,会者不难,快来拿分
  • gdb调试动态链接库
  • 在rh9上无法使用gdb是怎么回事呢
  • gdb高手请指教
  • gdb如何进行调试?
  • 请问,有人研究过gdb-insight源码吗?
  • 在linux下除了gdb外还有没其他好用的调试器?
  • gdb调试
  • Linux下gdb如何追踪进入子进程??急急7777777777777
  • 如何编译gdb
  • 怎样在windows中编译生成gdb
  • gdb调试时的文件格式问题
  • gdb升级的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3