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

求教有关gdb中的step命令的问题

    来源: 互联网  发布时间:2017-05-10

    本文导语:  gdb中,如果某一行代码有多个函数调用,例如: child = GetDecoder( )->Translate( req->address.GetPhysicalAddress( ) ) 使用step命令,默认可能是会进入GetDecoder( )函数,如果我想进入Tanslate()函数的话,应该怎么办呢? 谢谢...

gdb中,如果某一行代码有多个函数调用,例如:

child = GetDecoder( )->Translate( req->address.GetPhysicalAddress( ) )

使用step命令,默认可能是会进入GetDecoder( )函数,如果我想进入Tanslate()函数的话,应该怎么办呢?

谢谢!

|
finsh
你说的应该就是跳出这个函数吧.看下面简单例子

代码
#include 
#include 
#include 

struct sTa{
int (*bar)(int);
};
struct sTa s1;

int bar(int a){
a+=1;
a-=1;
return a+1;
}
struct sTa* foo(void)
{
int b=0;
b++;
s1.bar=bar;
return &s1;
}
int main()
{
int ret=foo()->bar(42);
printf("ret=%d",ret);
return 0;
}


编译
$ gcc 1.c -g -Wall -O0


调试,先进了foo(),finish出来就调用了bar().
然后就可以自己step咯.
$ gdb a.out 
GNU gdb (GDB) 7.6.2 (Debian 7.6.2-1)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
...
Reading symbols from /home/john/tmp/a.out...done.
(gdb) b main
Breakpoint 1 at 0x804843b: file 1.c, line 24.
(gdb) list
15 struct sTa* foo(void)
16 {
17 int b=0;
18 b++;
19 s1.bar=bar;
20 return &s1;
21 }
22 int main()
23 {
24 int ret=foo()->bar(42);
(gdb) r
Starting program: /home/john/tmp/a.out 
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?

Breakpoint 1, main () at 1.c:24
24 int ret=foo()->bar(42);
(gdb) step
foo () at 1.c:17 //进了foo
17 int b=0;
(gdb) finish  //finish出来
Run till exit from #0  foo () at 1.c:17
0x08048440 in main () at 1.c:24
24 int ret=foo()->bar(42);
Value returned is $1 = (struct sTa *) 0x8049750 
(gdb) step
bar (a=42) at 1.c:11 //进了你希望调试的foo函数
11 a+=1;
(gdb) step //自己玩咯
12 a-=1;
(gdb) 


引用回复


    
 
 

您可能感兴趣的文章:

  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 新手求教:关于ftp命令的问题,请大家帮帮忙
  • 求教,linux下c编程时怎么导入命令行?
  • 求教高手,关于shell命令
  • 求教关于linux下lftp命令,高手请进!
  • 求教一下关于目录拷贝命令
  • cp命令拷贝目录的问题 求教
  • linux如何从图形界面切换到命令格式(高分求教)?
  • gcc编译命令含义求教
  • 求教:使用crontab如何完成每间隔80分钟的执行一个命令的方法?
  • 求教各位大大:关于vi或top命令出现的界面,如何编程才能实现?
  • 求教UNIX命令,如何显示文本(text stream)的二进制格式?
  • Unix命令求教
  • 求教,如何调用shell命令!!!
  • 求教:shell 脚本里如何 执行二级命令啊
  • 【求教】linux vi编辑器底行模式下有哪些常用命令?
  • 求教,如何在命令行方式下拨号?
  • AIX下,此命令是什么意思!!!求教!!
  • 求教:如何在用C++编写的server中调用Linux命令
  • Linux下一个gcc命令的编写,求教。
  • 求教有关smartupload的问题,有关就给分!!
  • 有关L的问题(菜鸟求教)???
  • 高分求教:有关套接字建立ftp的问题
  • 有关apache起动问题-高分求教
  • 100分求教有关sco服务器的连接问题(在线等)
  • 求教有关makefile编写的问题 MYSRCS:%c=%o
  • 求教一个编程问题,,,有关popt
  • 有关进程,信号的问题,向各位大虾求教。。。
  • 求教有关makefile的问题
  • 有关线程的一些数据结构及函数求教。。
  • 200分求教有关linux核心的dos攻击算法分析以及源代码的情景分析,研究用,急!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题
  • 400分求教JAVA皮肤的问题


  • 站内导航:


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

    ©2012-2021,