首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从gdb调用dlopen

从gdb调用dlopen
EN

Stack Overflow用户
提问于 2017-02-17 17:39:18
回答 1查看 1.9K关注 0票数 0

我想从gdb加载共享库(.so),我找到了这个命令:

代码语言:javascript
复制
(gdb) call dlopen("path/to/lib.so",..)

但是它不起作用,我把我的程序和-ldl链接起来。

我得到的错误是:

代码语言:javascript
复制
No symbol "dlopen" in current context

我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-02-23 00:45:56

我找到了一个命令来解决这个主题的一半问题。我解释:首先,您应该将共享对象加载到进程中:

代码语言:javascript
复制
(gdb) set environment LD_PRELOAD /usr/lib/libdl.so

在此之后,我们将文件定义为debbuging

代码语言:javascript
复制
(gdb) file pgm

为了测试,我们将断点放在main (即

代码语言:javascript
复制
(gdb) break main

现在,我们运行程序

代码语言:javascript
复制
(gdb) run

我们称之为dlopen

代码语言:javascript
复制
(gdb) call dlopen("/path/to/lib.so",2)

到目前为止,它是工作,但当我放上最后一个命令时,我有:

代码语言:javascript
复制
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7de7f09 in ?? () from /lib64/ld-linux-x86-64.so.2
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function 
(_gdb_expr) will be abandoned.
When the function is done executing, GDB will silently stop.

当我将'unwindonsignal‘修改为(on/off)时,没有任何变化

这次我忘了什么?

useful

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42294396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档