Как иметь скрипт GDB/Python Использовать трубы для ввода и вывода отладки целиLinux

Ответить Пред. темаСлед. тема
Anonymous
 Как иметь скрипт GDB/Python Использовать трубы для ввода и вывода отладки цели

Сообщение Anonymous »

Я хочу запустить GDB с помощью сценария Python, который также стимулирует ввод цели отладки, скажем, через трубу. Я не могу получить заказ целевого выполнения и настройки труб, чтобы избежать блокировки или ошибки. Я пробовал решения как с блокировкой, так и с открытием неблокировки названных труб; Пример не блокировки разделен ниже.

Код: Выделить всё

import os

# create input/output pipes

in_pipe = "in"
out_pipe = "out"

try:
os.unlink(in_pipe)
except FileNotFoundError:
pass

try:
os.unlink(out_pipe)
except FileNotFoundError:
pass

os.mkfifo(in_pipe)
os.system(f"sleep infinity > {in_pipe} &")

print("in pipe:", in_pipe)

os.mkfifo(out_pipe)
os.system(f"sleep infinity > {out_pipe} &")

print("out pipe:", out_pipe)

# open in/out pipes to prevent starti command from blocking
# open a tmp read-only FD for the input pipe to prevent it's write-only open from blocking
out_fd = os.open(out_pipe, os.O_RDONLY | os.O_NONBLOCK)
tmp_fd = os.open(in_pipe, os.O_RDONLY | os.O_NONBLOCK) # prevent blocking
in_fd = os.open(in_pipe, os.O_WRONLY | os.O_NONBLOCK)

gdb.execute(f"set target-async on")

gdb.execute(f"starti < {in_pipe} > {out_pipe}")
gdb.execute(f"c&")

print(os.read(out_fd, 8)) # causes BlockingIOError for some reason, even if I ensure enough time for the target to print

print("--- DONE ---")
Есть ли способ сделать эту работу?

Подробнее здесь: https://stackoverflow.com/questions/795 ... gging-targ
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как иметь скрипт GDB/Python Использовать трубы для ввода и вывода отладки цели
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Проблема при чтении вывода команды DD с помощью трубы
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Распечатать аргументы, которые были переданы в GDB изнутри GDB?
    Anonymous » » в форуме Linux
    0 Ответы
    119 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при соединении GDB с сервером GDB
    Anonymous » » в форуме Linux
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Как мне настроить GDB/GDB с помощью Qemu и Linux?
    Anonymous » » в форуме Linux
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous

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