LINUX.ORG.RU

Свой gui к gdb

 , , ,


0

1

Решил создать plugin для отладки в gedit.

Вопрос состоит в следующем. Я запускаю gdb, запускаю приложение

r

пишу в gdb

b 11

и ничего не происходит. В текущий момент я не придумал ничего лучше чем писать

killall имя-приложения -5

После чего приложение уже останавливается там где мне нужно. Есть ли какой-то более правильный способ кроме как вызов kill с нужным сигналом?

Описание протокола читал?

Что бы писать в gdb асинхронно (пока отлаживаемое ПО запущенно, нужно использовать MI интерфейс насколько я знаю). Иначе, нужно приостановить выполнение приложения, поставить бряк и продолжить выполнение.

pon4ik ★★★★★
()
Последнее исправление: pon4ik (всего исправлений: 2)

Вроде такие плагины уже есть. Если уж хочешь навелосипдеть, так хоть посмотри, как другие решали эту задачу, к-рая наверняка и у них возникла.

den73 ★★★★★
()
Ответ на: комментарий от den73

К сожалению чужой код на c, python я читаю плохо так как не очень знаком с данными языками.

NextGenenration ★★
() автор топика
Ответ на: комментарий от pon4ik

Пока думал над решеним возник вопрос: для примера я взял приложение которое спустя интервал печатает числа по возрастающей. По дефолту и программа и gdb и то что я ввожу выглядят одинаково - очень легко запутаться. Есть какой-то способ сделать так - программа печатает к примеру красным, gdb синим, а то что я набираю получается белым?

Спасибо за мануал. Прочитал. В итоге решение нашёл тут.

GDB’s execution commands have two variants: the normal foreground (synchronous) behavior, and a background (asynchronous) behavior. In foreground execution, GDB waits for the program to report that some thread has stopped before prompting for another command. In background execution, GDB immediately gives a command prompt so that you can issue other commands while your program runs.

To specify background execution, add a & to the command. For example, the background form of the continue command is continue&, or just c&. The execution commands that accept background execution are:

В итоге выгляит это примерно так

gdb main

так будующий плагин будет запускать приложение

r&

тут надо остановить выполнение иначе ставить бряки не дадут

interrupt -a

теперь делаем то что надо и продолжаем выполнение дальше. к примеру ставим бряк на 15 строку

b 15
c&

теперь программа продолжает работу и при попадении на точку останова можно будет что-то сделать.

NextGenenration ★★
() автор топика
Ответ на: комментарий от NextGenenration

Про красный, синий и белый я сказать ничего не могу так как в разработке под gedit ничего не смыслю.

Могу только предположить, что печатать белым - плохая идея, т.к. буков будет не видно.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Я говорю про печать в терминале. Чтобы программа вызывала gdb и перекрашивала её вывод. Этот так, чисто для себя. У меня фон тёмный.

NextGenenration ★★
() автор топика
Ответ на: комментарий от NextGenenration

Можешь начать отсюда. Должен быть хороший man, но я не знаю на вскидку где он есть, для твоих целей этого должно хватить.

Учись в декомпозицию - вопрос к изначальной задаче не относится, шанс что кто-то кроме меня на него ответит или увидит в теме гораздо ниже, чем при отдельном топике.

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.