Netbeans C / C ++ в Linux «входит» в код выполнения Linux C?

0

При отладке кода C/C++ с netbeans в Linux можно "входить" в собственную библиотеку времени выполнения C (чтобы увидеть исходный код для malloc() и т.д.), Как и Visual Studio в Windows?

Если нет, могут ли какие-либо IDE Linux?

  • 4
    Virual Studio показывает исходный код malloc ?!
  • 0
    Нет, не может...
Теги:
netbeans
debugging

2 ответа

0

Вы можете установить 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 потому что это центральная часть почти всех приложений!

0

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;
}
  • 0
    Это не похоже на Linux malloc !
  • 0
    @BasileStarynkevitch: На самом деле это malloc MinGW. Это просто пример, чтобы сказать мою точку зрения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню