0

在 Linux 上使用 netbeans 调试 C/C++ 代码时,是否可以像 Windows 上的 Visual Studio 一样“进入”本机 C 运行时库(查看 malloc() 等的源代码)?

如果没有,任何 Linux IDE 都可以吗?

4

2 回答 2

0

如果在 Debian 或 Ubuntu(或派生的)发行版上,您可以安装libc6-dbg(或)软件包。libc-dbg

然后使用set debug-file-directory命令gdb

而且由于 Linux 是免费软件,你可以研究 ; 的源代码malloc。您的发行版可能使用了一些GNU libc的补丁变体;您还可以查看MUSL libc,它的源代码对我来说似乎更具可读性。

FWIW,malloc(3)肯定在使用诸如mmap(2)等系统调用...

在许多发行版上,您可以从源代码重建打包软件(例如apt-build...)

但如果你是新手,我不建议重建libc,因为它是几乎所有应用程序的核心部分!

于 2013-11-02T21:29:51.747 回答
0

malloc很多函数都有编译器的具体实现。通常你无法通过这种方式访问​​它们的源代码。例如在 gcc/g++ 中,在文件malloc中声明<cstdlib>并实现为外部函数.dll

在 Visual Studio 中,您可以查看一些声明并看到一些奇怪的代码,但它们只是一些高级代码来调用真正的 malloc. 你看不到真正的实现malloc

例如,在 step into 之后的测试中malloc,我看到下面的代码只是对内部函数的调用,等等……最后你什么也看不到:

extern "C" _CRTIMP void * __cdecl malloc (
        size_t nSize
        )
{
        void *res = _nh_malloc_dbg(nSize, _newmode, _NORMAL_BLOCK, NULL, 0);

        RTCCALLBACK(_RTC_Allocate_hook, (res, nSize, 0));

        return res;
}
于 2013-10-29T14:28:30.290 回答