При отладке кода C/C++ с netbeans в Linux можно "входить" в собственную библиотеку времени выполнения C (чтобы увидеть исходный код для malloc() и т.д.), Как и Visual Studio в Windows?
Если нет, могут ли какие-либо IDE Linux?
Вы можете установить libc6-dbg
(или libc-dbg
), если на Debian или Ubuntu (или производном) дистрибутиве.
Затем используйте команду set debug-file-directory gdb
И поскольку Linux является свободным программным обеспечением, вы можете изучить исходный код malloc
; ваш дистрибутив, вероятно, использует некоторый исправленный вариант GNU libc; вы также можете посмотреть в MUSL libc, исходный код которого мне кажется более читаемым.
FWIW, malloc (3), безусловно, использует системные вызовы, такие как mmap (2) и т.д.
И во многих дистрибутивах вы можете перестроить упакованное программное обеспечение из исходного кода (например, с помощью apt-build
...)
Но если вы новичок, я не рекомендую перестраивать libc
потому что это центральная часть почти всех приложений!
malloc
и многие функции имеют специфическую реализацию компилятора. Обычно вы не можете получить доступ к исходному коду. Например, в gcc/g++ malloc
объявлен в <cstdlib>
и реализован как внешняя функция в .dll
файле.
В Visual Studio вы можете просмотреть некоторые объявления и увидеть некоторые странные коды, но это всего лишь некоторые высокоуровневые коды для вызова реального malloc
. Вы не видите реальной реализации malloc
.
Например, в моем тесте после шага в 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;
}
malloc
!
malloc
MinGW. Это просто пример, чтобы сказать мою точку зрения.
malloc
?!