GDB Windows перенаправление вывода

Я пытался следовать предложениям, данным в варианте 3 первого ответа на этот похожий вопрос. Мне удалось использовать предоставленные команды для перенаправления ввода, но я не могу перенаправить вывод. Вот мои команды:

# gdb debugee.exe
(gdb) b main
(gdb) run
(gdb) p dup2(open("output.txt", 256), 1) 
(gdb) c

Заметил, что я использую 256, чтобы сказать "создать, если не существует" и 1 вместо 0, чтобы перенаправить стандартный вывод вместо стандартного ввода.

Файл создан, и вывод программы, кажется, идет куда-то, так как он не появляется в окне терминала; но файл остается пустым.

Что я делаю неправильно? Или есть дополнительные соображения для вывода?

1 ответ

Вы должны сначала попробовать:

p open("output.txt", 256)

и убедитесь, что это возвращает что-то другое, чем -1,

O_CREAT версия open на самом деле принимает 3 аргумента. Если предположить, O_CREAT на самом деле это 256 в вашей системе, а O_WRONLY равно 1, правильный вызов должен быть что-то вроде

p open("output.txt", 257, 0744)

Что я делаю неправильно?

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

Другие вопросы по тегам