Linux 下debug用法,linux-如何使用lib的调试版本

问题的简短版本:如何使gdb使用libc的调试符号?

较长版本:我正在使用gdb调试程序,我想查看有关libc使用的futex的信息。 但是,在调试过程中的某个时刻,我得到如下输出:

Catchpoint 2 (call to syscall futex), 0x00007ffff772b73e in ?? () from /lib/libc.so.6

(gdb) bt

#0 0x00007ffff772b73e in ?? () from /lib/libc.so.6

#1 0x00007ffff767fb90 in ?? () from /lib/libc.so.6

#2 0x00007ffff767a4c0 in vfprintf () from /lib/libc.so.6

#3 0x00007ffff768565a in printf () from /lib/libc.so.6

....

当我在断点处在gdb中运行/usr/lib/debug/lib时,我看到:

(gdb) info sharedlibrary

From To Syms Read Shared Object Library

0x00007ffff7dddaf0 0x00007ffff7df6704 Yes (*) /lib64/ld-linux-x86-64.so.2

0x00007ffff7bc53e0 0x00007ffff7bd1388 Yes (*) /lib/libpthread.so.0

0x00007ffff79ba190 0x00007ffff79bd7d8 Yes (*) /lib/librt.so.1

0x00007ffff76538c0 0x00007ffff7766c60 Yes (*) /lib/libc.so.6

0x00007ffff6c1fd80 0x00007ffff6c303c8 Yes (*) /lib/libgcc_s.so.1

(*): Shared library is missing debugging information.

当我运行/usr/lib/debug/lib时,我看到:

linux-vdso.so.1 => (0x00007ffff7fde000)

libpthread.so.0 => /lib/libpthread.so.0 (0x00007ffff7dbf000)

librt.so.1 => /lib/librt.so.1 (0x00007ffff7bb6000)

libc.so.6 => /lib/libc.so.6 (0x00007ffff7833000)

/lib64/ld-linux-x86-64.so.2 (0x00007ffff7fdf000)

我正在使用Ubuntu 10.04,并且我认为带有调试符号的libc版本在/usr/lib/debug/lib中。我尝试将LD_LIBRARY_PATH变量设置为在路径的开头,但这似乎没有什么不同。

我不清楚程序是如何选择要加载的共享库的,这是在运行时还是在编译时设置的(我假设是运行时,但现在不确定)。 因此,赞赏有关如何使gdb使用libc的调试版本的信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中进行硬件调试和故障排除通常需要以下步骤和配置: 1. 启用内核调试信息:在编译内核时,需要启用内核调试信息的选项。通过编辑内核配置文件(通常位于 `/usr/src/linux/.config`),确保以下选项被设置为 `y` 或 `m`: - `CONFIG_DEBUG_KERNEL`:启用内核调试 - `CONFIG_DEBUG_INFO`:启用内核符号信息 - `CONFIG_DEBUG_INFO_DWARF4`:启用DWARF格式的调试信息 2. 配置kdump:kdump是Linux系统的一种崩溃转储机制,可以在系统崩溃时收集内核转储信息以进行故障分析。要配置kdump,需要安装相关软件包,并编辑 `/etc/kdump.conf` 文件来指定转储文件的位置和大小等参数。 3. 使用GDB进行内核调试:GDB是一个功能强大的调试器,可以用于调试内核代码。要使用GDB进行内核调试,需要: - 安装GDB和相应的调试符号文件(通常位于 `/usr/lib/debug` 目录)。 - 编译内核时启用 `CONFIG_DEBUG_INFO` 和 `CONFIG_DEBUG_INFO_DWARF4` 选项。 - 使用GDB连接到运行中的内核,设置断点、观察变量等。 4. 使用硬件调试工具:对于一些硬件故障,可能需要使用特定的硬件调试工具。例如,使用JTAG调试器可以连接到目标硬件上的调试接口,对硬件进行调试和故障排除。 以上是一般的硬件调试和故障排除配置步骤。具体的配置和调试方法可能会因硬件平台、操作系统版本调试工具而有所不同。在进行任何硬件调试之前,请确保您具备足够的知识和经验,并遵循相关的文档和指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值