int3

Тема в разделе "WASM.UNIX", создана пользователем cresta, 21 ноя 2005.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Под windows по int3 можно попасть в обработчик исключений, и получив там доступ к структуре CONTEXT, просмотреть и при необходимости модифицировать регистры.

    Есть ли подобный механизм под linux? Ради интереса вставил в код int3 - программа вывела в консоль сообщение Trace/Breakpoint trap и молча завершилась. Как заставить систему передать управление на мой код по int3?
     
  2. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    Твой вопрос приактически сводится к "Как написать отладчик для линухи" ;))
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Нет, не отладчик, а обработчик исключений, имхо.
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    B_108



    Телепат что-ли? Почти угадал :)

    Есть самодельная тулза под windows для отладки c++ прог типа VKDEBUG с набором функций

    DBG_DEC(x)

    DBG_HEX(x)

    DBG_STR(sz)

    DBG_DBL(xx)

    DBG_LINE

    DBG_BREAK

    и я хотел её повторить для linux. Загвоздка в последней функции: под винду ставил обработчик и прога по DBG_BREAK попадала туда. Там я мог посмотреть и при желании модифицировать регистры.

    Вот мне и нужен аналог SetUnhandledExceptionFilter.
     
  5. B_108

    B_108 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    62
    cresta

    У меня дурацкий вопрос: а почему для отладки именно с++ прог? %))))
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    B_108

    Изначально модуль на си и для си, просто подключается .h и .cpp к отлаживаемому проекту. Для асма есть RadAsm'овый OutPut Window, вполне хватает. Хотя можно и для ассемблерных переписать. Разницы не вижу, главное найти способ остановить прогу и затем её продолжить.

    Нарыл кое-какую доку по регистрации собственного syscall, но это больно громоздко получается, и надо перекомпилировать ядро.