Как отладить процесс, загруженный динамическим загрузчиком вручную с помощью GDBC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Как отладить процесс, загруженный динамическим загрузчиком вручную с помощью GDB

Сообщение Гость »


С помощью простой программы:

> cat ./helloworld.cc #include #include #include интервал основной() { в то время как (истина) { std::cout g++ -Wall helloworld.cc -o helloworld -g И запустить, загрузив его вручную с помощью ld.so:

> /lib64/ld-linux-x86-64.so.2 ./helloworld Привет, мир Привет, мир Привет, мир Привет, мир Предположим, что pid (идентификатор процесса) этого процесса равен 12345, и я подключаюсь к нему с помощью gdb:

> sudo gdb -p 12345 GNU GDB (Ubuntu 12.1-0ubuntu1~22.04) 12.1 Авторские права (C) 2022 Free Software Foundation, Inc. Лицензия GPLv3+: GNU GPL версии 3 или новее Это бесплатное программное обеспечение: вы можете изменять и распространять его. НЕТ НИКАКИХ ГАРАНТИЙ, в пределах, разрешенных законом. Для получения подробной информации введите «показать копирование» и «показать гарантию». Эта GDB была настроена как «x86_64-linux-gnu». Введите «показать конфигурацию» для получения подробной информации о конфигурации. Инструкции по сообщению об ошибках см.: . Найдите руководство по GDB и другие ресурсы документации в Интернете по адресу: . Для получения помощи введите «help». Введите «apropos word», чтобы найти команды, связанные со словом. Присоединение к процессу 83860 Чтение символов из /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2... Чтение символов из /usr/lib/debug/.build-id/61/ef896a699bb1c2e4e231642b2e1688b2f1a61e.debug... Чтение символов из /lib/x86_64-linux-gnu/libstdc++.so.6... (Символы отладки не найдены в /lib/x86_64-linux-gnu/libstdc++.so.6) Чтение символов из /lib/x86_64-linux-gnu/libc.so.6... Чтение символов из /usr/lib/debug/.build-id/69/389d485a9793dbe873f0ea2c93e02efaa9aa3d.debug... Чтение символов из /lib/x86_64-linux-gnu/libm.so.6... Чтение символов из /usr/lib/debug/.build-id/27/e82301dba6c3f644404d504e1bb1c97894b433.debug... Чтение символов из /lib64/ld-linux-x86-64.so.2... Чтение символов из /usr/lib/debug/.build-id/61/ef896a699bb1c2e4e231642b2e1688b2f1a61e.debug... Чтение символов из /lib/x86_64-linux-gnu/libgcc_s.so.1... (В /lib/x86_64-linux-gnu/libgcc_s.so.1 символы отладки не найдены) [Отладка потоков с использованием libthread_db включена] Использование хост-библиотеки libthread_db "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007f2b474e57fa в __GI___ clock_nanosleep ( clock_id= clock_id@entry=0, flags=flags@entry=0, req=0x7ffc1ea7ff20, rem=0x7ffc1ea7ff20) в ../sysdeps/unix/sysv/linux/ clock_nanosleep.c:78 78 ../sysdeps/unix/sysv/linux/lock_nanosleep.c: Нет такого файла или каталога. (гдб) BT #0 0x00007f2b474e57fa в __GI___ clock_nanosleep ( clock_id= clock_id@entry=0, flags=flags@entry=0, req=0x7ffc1ea7ff20, rem=0x7ffc1ea7ff20) по адресу ../sysdeps/unix/sysv/linux/lock_nanosleep.c:78 #1 0x00007f2b474ea6e7 в __GI___nanosleep (req=, rem=) в ../sysdeps/unix/sysv/linux/nanosleep.c:25 #2 0x00007f2b47b0a54f в ?? () #3 0x00007f2b47b0d040 в ?? () # sudo gdb -p 12345 GNU GDB (Ubuntu 12.1-0ubuntu1~22.04) 12.1 Авторские права (C) 2022 Free Software Foundation, Inc. Лицензия GPLv3+: GNU GPL версии 3 или новее Это бесплатное программное обеспечение: вы можете изменять и распространять его. НЕТ НИКАКИХ ГАРАНТИЙ, в пределах, разрешенных законом. Для получения подробной информации введите «показать копирование» и «показать гарантию». Эта GDB была настроена как «x86_64-linux-gnu». Введите «показать конфигурацию» для получения подробной информации о конфигурации. Инструкции по сообщению об ошибках см.: . Найдите руководство по GDB и другие ресурсы документации в Интернете по адресу: . Для получения помощи введите «help». Введите «по поводу слова» для поиска команд, связанных со словом «слово». Присоединение к процессу 83928 Чтение символов из /tmp/helloworld... Чтение символов из /lib/x86_64-linux-gnu/libstdc++.so.6... (Символы отладки не найдены в /lib/x86_64-linux-gnu/libstdc++.so.6) Чтение символов из /lib/x86_64-linux-gnu/libc.so.6... Чтение символов из /usr/lib/debug/.build-id/69/389d485a9793dbe873f0ea2c93e02efaa9aa3d.debug... Чтение символов из /lib/x86_64-linux-gnu/libm.so.6... Чтение символов из /usr/lib/debug/.build-id/27/e82301dba6c3f644404d504e1bb1c97894b433.debug... Чтение символов из /lib64/ld-linux-x86-64.so.2... Чтение символов из /usr/lib/debug/.build-id/61/ef896a699bb1c2e4e231642b2e1688b2f1a61e.debug... Чтение символов из /lib/x86_64-linux-gnu/libgcc_s.so.1... (В /lib/x86_64-linux-gnu/libgcc_s.so.1 символы отладки не найдены) [Отладка потоков с использованием libthread_db включена] Использование хост-библиотеки libthread_db "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007f543c2e57fa в __GI___ clock_nanosleep ( clock_id= clock_id@entry=0, flags=flags@entry=0, req=0x7ffdf8c83640, rem=0x7ffdf8c83640) по адресу ../sysdeps/unix/sysv/linux/lock_nanosleep.c:78 78 ../sysdeps/unix/sysv/linux/lock_nanosleep.c: Нет такого файла или каталога. (гдб) BT #0 0x00007f543c2e57fa в __GI___ clock_nanosleep ( clock_id= clock_id@entry=0, flags=flags@entry=0, req=0x7ffdf8c83640, rem=0x7ffdf8c83640) по адресу ../sysdeps/unix/sysv/linux/lock_nanosleep.c:78 #1 0x00007f543c2ea6e7 в __GI___nanosleep (req=, rem=) в ../sysdeps/unix/sysv/linux/nanosleep.c:25 #2 0x000056445831054f в std::this_thread::sleep_for (__rtime=...) в /usr/include/c++/11/bits/this_thread_sleep.h:82 #3 0x0000564458310243 в main() на helloworld.cc:8 (БГДБ)
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как мне настроить GDB/GDB с помощью Qemu и Linux?
    Anonymous » » в форуме Linux
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Распечатать аргументы, которые были переданы в GDB изнутри GDB?
    Anonymous » » в форуме Linux
    0 Ответы
    119 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при соединении GDB с сервером GDB
    Anonymous » » в форуме Linux
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Как запустить процесс в C# на Linux, где процесс запуска может закончиться, не убивая дочерний процесс?
    Anonymous » » в форуме Linux
    0 Ответы
    121 Просмотры
    Последнее сообщение Anonymous
  • Проблема с загрузкой файлов HTTP-сервера C++ с загрузчиком Ajax [решено]
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»