在 gdb 中包含 malloc.c 的源代码? [英] Include source code of malloc.c in gdb?

查看:31
本文介绍了在 gdb 中包含 malloc.c 的源代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 gdb 中包含/查看 malloc 的源代码?

我想在gdb中一步步执行,在调用任何malloc函数时,进入malloc.c源代码.

目前gdb所说的是:malloc.c:没有那个文件或目录.

这个这里的人遇到了同样的问题,但他们确实遇到了不提解决方案,即如何真正进入malloc的源代码.

我在 Ubuntu server 14.04 上,我已经尝试安装以下内容:libc6-dbglibc6-devlibc6-dbgsym.我什至不知道这些软件包中的一个是否有帮助,但是安装 libc-dbgsym 会给我以下错误:

dpkg: error processing archive/var/cache/apt/archives/libc6-dbgsym_2.19-0ubuntu6.6_amd64.ddeb (--unpack): 试图覆盖'/usr/lib/debug/usr/lib/x86_64-linux-gnu/audit/sotruss-lib.so',其中也在包 libc6-dbg:amd64 2.19-0ubuntu6.6 dpkg-deb: 错误:子进程粘贴被信号杀死(断管)

解决方案

以下对我有用.不确定是否有更好的方法.

  1. 安装 libc6-dbg(你已经完成了):sudo apt-get install libc6-dbg
  2. 安装eglibc-source包(ubuntu实际使用eglibc):sudo apt-get install eglibc-source.
  3. 解压安装在/usr/src/glibc中的tar文件:/usr/src/glibc $ sudo tar xvf eglibc-2.19.tar.xz
  4. 启动 gdb 并添加到 malloc 源的路径:(gdb) dir/usr/src/glibc/eglibc-2.19/malloc

<块引用>

(gdb) n

13 个字符 *c = malloc(100);

(gdb) s

__GI___libc_malloc (bytes=100) at malloc.c:2876 2876

{

(gdb)

How can I include/view the source code of malloc in gdb?

I want to do a step by step execution in gdb, and step into malloc.c source code when any of the malloc functions is called.

Currently what gdb says is: malloc.c: No such file or directory.

This guy here faced the same problem, but they do not mention a solution, ie how to actually step into the source code of malloc.

I am on Ubuntu server 14.04, and I have already tried to install the following: libc6-dbg, libc6-dev, and libc6-dbgsym. I don't even know if one of these packages might help, but installing the libc-dbgsym gives me the following error:

dpkg: error processing archive /var/cache/apt/archives/libc6-dbgsym_2.19-0ubuntu6.6_amd64.ddeb (--unpack):  trying to overwrite
    '/usr/lib/debug/usr/lib/x86_64-linux-gnu/audit/sotruss-lib.so', which
    is also in package libc6-dbg:amd64 2.19-0ubuntu6.6 dpkg-deb: error:
    subprocess paste was killed by signal (Broken pipe)

解决方案

The following worked for me. Not sure whether there is a better way.

  1. Install libc6-dbg (which you have already done): sudo apt-get install libc6-dbg
  2. Install the eglibc-source package (ubuntu actually uses eglibc): sudo apt-get install eglibc-source.
  3. Unpack the tar file that was installed in /usr/src/glibc: /usr/src/glibc $ sudo tar xvf eglibc-2.19.tar.xz
  4. Crank up gdb and add in the path to the malloc source: (gdb) dir /usr/src/glibc/eglibc-2.19/malloc

(gdb) n

13 char *c = malloc(100);

(gdb) s

__GI___libc_malloc (bytes=100) at malloc.c:2876 2876

{

(gdb)

这篇关于在 gdb 中包含 malloc.c 的源代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆