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

GDB调试动态库so问题?

    来源: 互联网  发布时间:2015-12-24

    本文导语:  #get.h 头文件内容如下: int get (); int set (int a); #get.cpp 文件内容如下: #include  #include "get.h" static int x=0; int get () {         printf ("get x=%dn", x);         return x; } int set (int a) {         printf ("s...

#get.h 头文件内容如下:
int get ();
int set (int a);

#get.cpp 文件内容如下:

#include 
#include "get.h"

static int x=0;
int get ()
{
        printf ("get x=%dn", x);
        return x;
}
int set (int a)
{
        printf ("set a=%dn", a);
        x = a;
        return x;
}

编译为库文件:gcc get.cpp -shared -g -DDEBUG -o libggg.so

测试程序pk.cpp如下
#include 
#include "get.h"
int main (int argc, char** argv)
{
        int a = 100;
        int b = get ();
        int c = set (a);
        int d = get ();

        printf ("a=%d,b=%d,c=%d,d=%dn",a,b,c,d);
        return 0;
}

编译后执行app,输出正确,现在需要调试库文件,要在get函数,set函数里设置断点。

gdb app
b main
run

b get
此时提示 :Cannot access memory at address 0x5cc,

请问各位大侠,该如何在库的源文件里设置断点呀?所有的文件都在同一个目录里的呀。

|
vcclass (黑山老妖)你好,下面是我的测试结果。

1)文件列表:
> ls -l
-rw-r--r--  1 hchen wheel 209 Nov 16 11:08 get.c
-rw-r--r--  1 hchen wheel  28 Nov 16 11:07 get.h
-rw-r--r--  1 hchen wheel 237 Nov 16 11:08 main.c
-rw-r--r--  1 hchen wheel 213 Nov 16 11:52 makefile

2)Makefile的样子
> cat ./makefile
all:main

libget.so:get.c
        gcc -g -c -o get.o get.c
        gcc -g -shared -o libget.so get.o

main:main.c libget.so
        gcc -g -c -o main.o main.c
        gcc -g -o main main.o -L./ -lget

clean:
        @rm libget.so get.o main.o main

3)编译程序
> make
gcc -g -c -o get.o get.c
gcc -g -shared -o libget.so get.o
gcc -g -c -o main.o main.c
gcc -g -o main main.o -L./ -lget

4)设置LD_LIBRARY_PATH环境变量
> setenv LD_LIBRARY_PATH ${PWD}
> env | grep LD
LD_LIBRARY_PATH=/home/hchen/test/so

5)用GDB调试(step in)
> gdb ./main

(gdb) break main
Breakpoint 1 at 0x80484d0: file main.c, line 5.
(gdb) r
Starting program: /home/hchen/test/so/main

Breakpoint 1, main (argc=1, argv=0xbfe62fc4) at main.c:5
5               int a = 100;
(gdb) n
6               int b = get ();
(gdb) s    

    
 
 

您可能感兴趣的文章:

  • 如何使用linux下gdb来调试python程序
  • gdb调试时命令行参数如何输入?比如main(int argc,char **argv)中,我要把一个filename作为argv[1]传入给gdb调试
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • linux gdb: 我在一台机器上编译的程序用GDB可以调试,把程序放到另外一台机器上调试,调试信息就没有了 这是什么原因呢?
  • GDB调试 GDB挂了。。。
  • gdb 如何调试带命令行参数的程序 如 gdb a.out arg1,arg2
  • linux下用gdb调试程序感觉非常不方便,不知道大家使用的什么工具进行调试的呀?
  • 关于GDB无法调试segmentaton fault的问题,调试就死机
  • GDB调试问题,多共享库调试
  • gdb 怎么调试socket程序
  • 程序调试工具 GDB
  • 写调试器(像gdb)的一般思路是什么
  • gdb调试时的文件格式问题
  • gdb调试的问题,求高手。
  • Web服务器/前端 iis7站长之家
  • gdb调试动态链接库
  • 关于gdb调试资料---详细的
  • 哪位兄弟知道?gdb如何调试动态连接库
  • 在linux下除了gdb外还有没其他好用的调试器?
  • 在windows下编译和调试远程GDB BVRDE
  • gdb 调试
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • gdb 使用问题请教
  • gdb的问题,请教,会者不难,快来拿分
  • gdb升级的问题
  • 找高手:gdb脚本传递参数问题
  • gdb运行过程中报错问题
  • GDB在Solaris9上的安装问题
  • gdb下用shell写环境变量的问题
  • 一个GDB的问题?
  • 新用linux的GDB, 版本是出现6.3.3.0,出现奇怪问题, 可能是环境设置的问题, 大人帮忙
  • 求助:gdb调试问题
  • 求助!第一次使用gdb,出问题不懂怎么解决
  • gdb问题,
  • gdb调试程序时directory设置的问题
  • in关于insight gdb的问题
  • 问一个关于gdb的问题
  • gdb中使用set给变量赋值的问题
  • gdb调试问题,关于list命令的
  • 关于gdb的问题!!!!!
  • 一个GDB的问题
  • gdb找不到源文件的问题
  • 使用gcc gdb的大牛进来说说gdb的强大之处在哪。我刚学linux了,vim我确实体会到了其强大之处。而对gcc gdb,体会不到gdb这工具的强大之处。
  • 请教 make gdb-6.4 出现 make[4]: Entering directory `/tmp/gdb-6.4/gdb/doc'
  • 在rh9上无法使用gdb是怎么回事呢
  • gdb高手请指教
  • 请问,有人研究过gdb-insight源码吗?
  • gdb调试
  • Linux下gdb如何追踪进入子进程??急急7777777777777
  • 如何编译gdb
  • 怎样在windows中编译生成gdb
  • 如何阅读GDB源代码?
  • 我的gdb为什么不能设置logging?


  • 站内导航:


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

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

    浙ICP备11055608号-3