@RokkerRuslan

Как отладить программу, которую вызывает другая программа?

Имеем программу main. Вызывается она так:
main.exe "path/to/child.exe"
Аргументом её выступает путь до нашей программы child, которую необходимо отладить. Программа main перенаправляет потоки ввода/вывода для взаимодействия с child (т.е. child читает информацию от main из stdin, пишет для main в в stdout)

Вопрос в том, как произвести отладку программы child?
На ум приходит решение, логировать информацию, т.е. просто записывать в файл. Но хотелось бы иметь отладчик и вывод на консоль.

Хотелось бы разъяснить, такую форму обычно имеют программы проверки на различных олимпиадах по программированию. Где программа проверки запускает нашу с какими либо аргументами и проверяет вывод. Тут осложняется лишь тем, что обмен происходит постоянно во время выполнения. Программа main начинает "общение", программа child должна предпринять действия исходя из того что получила от main. Ответ child породит следующий запрос от main. И поехали взаимодействовать циклично.
  • Вопрос задан
  • 2458 просмотров
Решения вопроса 1
Vinatorul
@Vinatorul
Developer
Ну первое, что приходит в голову - прямо из Visual Studio "подцепляться" к процессу Child (Отладка->Присоедениться к процессу).
Если у вас есть ещё и исходники этого процесса, то может отладчик ещё и поймёт и позволит трассировать по коду, а не по дизассемблеру.

UPD
Чтобы отладчик мог сопоставить код и процесс - нужно, чтобы исполняемый файл был собран со всеми отладочными данными.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
А что мешает отладить отдельно вторую программу? Покрыть ее тестами...
Ответ написан
@vilgeforce
Раздолбай и программист
Можно поменять байт на точке входа в child на 0xCC и при запуске процесс долбанется. В это время вызывается JIT-отладчик (хоть та же студия), в нем меняется байт обратно и отлаживается софтина.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы