The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Внедрение точек останова gdb в исхо..."
Отправлено auto_tips, 29-Ноя-12 00:50 
На github [[https://github.com/kmcallister/embedded-breakpoints опубликован]] способ внедрения в исходный код точек останова для gdb, не влияющий на нормальное выполнение программы в отсутствие отладчика. Способ основан на размещении адреса локальной переменной в секции (embed-breakpoints линкера).


  #define EMBED_BREAKPOINT \
    asm("0:"                              \
        ".pushsection embed-breakpoints;" \
        ".quad 0b;"                       \
        ".popsection;")

   int main() {
       printf("Hello,\n");
       EMBED_BREAKPOINT;
       printf("world!\n");
       EMBED_BREAKPOINT;
       return 0;
   }

Собираем враппер для gdb:

    sudo apt-get install binutils-dev
    git clone git://github.com/kmcallister/embedded-breakpoints.git
    cd embedded-breakpoints
    ./build.sh

Собираем тестовое приложение и запускаем под управлением враппера к gdb:

   $ gcc -g -o example example.c
   $ ./gdb-with-breakpoints ./example

   Reading symbols from example...done.
   Breakpoint 1 at 0x4004f2: file example.c, line 8.
   Breakpoint 2 at 0x4004fc: file example.c, line 10.

   (gdb) run

   Starting program: example
   Hello,

   Breakpoint 1, main () at example.c:8
   8           printf("world!\n");

   (gdb) info breakpoints

   Num     Type           Disp Enb Address            What
   1       breakpoint     keep y   0x00000000004004f2 in main at   example.c:8
        breakpoint already hit 1 time
   2       breakpoint     keep y   0x00000000004004fc in main at example.c:10

При выполнении напрямую и или в версии gdb без специального враппера точки останова никак не отражаются на работе программы.


URL: http://mainisusuallyafunction.blogspot.com/2012/01/embedding...
Обсуждается: http://www.opennet.ru/tips/info/2722.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру