Ответ 1
Еще в конце 90-х годов сломанное перенаправление командной строки было известным и предполагаемым ограничением. Мое подозрение в том, что это так, потому что порт mingw32
gdb
до сих пор радостно передает дословно все аргументы run
(включая переадресацию) для дебюта.
Несколько возможных обходных решений:
- если у вас есть возможность изменить интерфейс командной строки, затем выполните
bbadour
предложение - в противном случае, если вы можете легко приостановить процесс до того момента, когда вы хотите отлаживать, вызовите debugee (с перенаправлением) из оболочки и прикрепите к нему, пока он уже запущен.
-
в противном случае, если у вас есть символы для debugee (
gcc -g
) или вы знаете адресmain()
(gcc -Wl,-Map,mapfile
) и можете установить там точку останова, действуйте следующим образом (проверяется с помощьюmingw gdb 6.8.0
):# gdb debugee.exe (gdb) b main (gdb) run non-redirect-arguments-if-any (gdb) p dup2(open("/tmp/input.txt", 0), 0) (gdb) c