免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1955 | 回复: 0
打印 上一主题 下一主题

[求助] 关于hp-ux下使用gdb jump的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-16 16:06 |只看该作者 |倒序浏览
本帖最后由 sculida 于 2014-12-16 16:08 编辑

大家好!在linux的gdb中,jump可以使运行中的程序跳转到程序文件自身的函数或者库文件的某个函数。但是hp-ux下只能跳转到程序文件自身的函数,不能跳转到库文件的某个函数。盼各位大神指点一二。
以下在hp-ux中操作
1. 查看各源文件
-bash-3.00$ cat main.c
#include <unistd.h>
#include <stdio.h>
#include "loglida.h"
int main() {
        int i=0;
        while (1) {
                sleep(1);
                printf("continue...%d\n", i++);
                sleep(3);
                loglida();
        }
        return 0;
}
-----
-bash-3.00$ cat loglida.h
#ifndef LOGLIDA_H
#define LOGLIDA_H
void loglida();
#endif
-----
-bash-3.00$ cat loglida.c
#include "loglida.h"
#include <stdio.h>
void loglida() {
        printf("original loglida\n");
}
2. 编译链接生成程序
-bash-3.00$ aCC -c main.c
-bash-3.00$ aCC +z -b loglida.c -o lib/libloglida.sl
-bash-3.00$ aCC main.c -L/home/tcb/lida/ldpreload/lib -lloglida

3.执行程序
-bash-3.00$ ./a.out
continue...0
original loglida
continue...1
original loglida
continue...2
original loglida
continue...3
original loglida
continue...4
original loglida
continue...5
original loglida
continue...6
original loglida
continue...7
4.gdb attach之
-bash-3.00$ gdb a.out
HP gdb 5.4.0 for PA-RISC 1.1 or 2.0 (narrow), HP-UX 11.00
and target hppa1.1-hp-hpux11.00.
Copyright 1986 - 2001 Free Software Foundation, Inc.
Hewlett-Packard Wildebeest 5.4.0 (based on GDB) is covered by the
GNU General Public License. Type "show copying" to see the conditions to
change it and/or distribute copies. Type "show warranty" for warranty/support.
..(no debugging symbols found)...
(gdb) attach 13449
Attaching to program: /home/tcb/lida/ldpreload/a.out, process 13449

warning: The shared libraries were not privately mapped; setting a
breakpoint in a shared library will not work until you rerun the program.

(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...
(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...
(no debugging symbols found)...(no debugging symbols found)...warning: reading `r3' register: No data
0xc0210d90 in __sigtimedwait_sys+0x10 () from /usr/lib/libc.2
(gdb) bt
#0  0xc0210d90 in __sigtimedwait_sys+0x10 () from /usr/lib/libc.2
#1  0xc021a634 in sigtimedwait+0x6c () from /usr/lib/libc.2
#2  0xc01ab520 in sleep+0xe8 () from /usr/lib/libc.2
#3  0x2cf4 in main+0x44 ()
(gdb) jump loglida
Continuing at 0xc033b2e0.
然后gdb和a.out就都卡在这里不能动了。但是如果loglida函数是在main.c里实现的话,gdb jump就可以顺利跳转
(当然,跳转之后就会段错误)
----------
以上,请问怎么jump到库文件的某个函数。
非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP