Продолжите после СИГНАЛА с помощью скрипта Python в GDB

Я пытаюсь сгенерировать некоторые выходные данные о сбоях сегментации (и других сигналах) с помощью сценария Python в gdb.Сценарий выглядит так:Проблема в том, что мне нужно нажимать c и Enter при каждой ошибке сегментации, сценарий не продолжается.Если я сделаюв обработчике я получаю StackOverflow.Я думаю, это потому, что execute () никогда не возвращается.Если я сделаюМой обработчик больше не вызывается.Как я могу продолжить после обработчика?
4 голоса | спросил Alex 20 PM00000090000002831 2014, 21:06:28

2 ответа


0
Хорошо, я узнал, как это сделать:Во-первых, мне нужен отзыв для команды продолжения.Как предположил Том, это будет использоваться с post_event:А вот обработчик события:И затем, чтобы вызвать его:Хитрость заключается в том, чтобы отключить блокировку планировщика позже, это необходимо, чтобы избежать проблем параллелизма, но это приводит к тупику, если никакой обработчик не запущен.
ответил Alex 21 PM00000020000003131 2014, 14:07:31
0
К сожалению для вас, до сих пор нет хорошего Python API для сигналов в gdb.Вместо этого вы должны прибегнуть к взломам.Тем не менее, ваш подход кажется мне довольно хорошим.Чтобы справиться с проблемой «продолжения», я бы предложил использовать ---- +: = 0 =: + ----, чтобы вставить событие в очередь событий GDB.Событие может вызывать команду ---- +: = 1 =: + ---- .Это должно по крайней мере избежать проблемы переполнения стека.
ответил Tom Tromey 21 AM00000050000000731 2014, 05:34:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132