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)
Что я делаю неправильно?
Помимо предоставления мусора для режима вновь созданного файла, вы создаете его в режиме только для чтения. Все последующие записи терпят неудачу из-за этого и уходят в никуда.