Я использую типичный процесс производителя и потребителя, но они выполняются с использованием pipe в командной строке, как показано ниже:
c:\>producer | consumer
producer
просто распечатывает данные в stdout
, а consumer
читает из stdin
.
Моя проблема в том, что я хочу отладить consumer
процесс. Каков наилучший способ сделать это в VC ++ и GDB?
Одним из решений является выгрузка в файл и чтение файла:
c:\>producer > temp.data
c:\>consumer < temp.data
Однако объем данных, передаваемых этими двумя, чрезвычайно велик. temp.data
будет больше, чем 1 ТБ! Я могу использовать сжатие, но для сжатия / распаковки требуется огромное количество времени. Итак, я хочу сделать это онлайн.
Текущий мой обходной путь:
- Перед выполнением какой-либо работы, например чтения с
stdin
.
- Вызовите
producer | consumer
из консоли. Затем consumer
запускается с 10-секундным сном.
- Присоедините
consumer
процесс с помощью VC ++ и GDB за 10 секунд.
- Хорошо, после сна я могу теперь отладить потребителя.
Да, этот обходной путь работает. Но это довольно раздражает. Я думаю, что есть лучший способ отладки в этой ситуации. Я ценю любую идею для этого.