Używam lldb jako samodzielnego debuggera w systemie OSX. Próbuję debugować plik wykonywalny C, używając pliku tekstowego jako danych wejściowych. Dokumentacja lldb określa następujące polecenie do zmiany stdin do danego pliku:Nie można uzyskać lldb do odczytu pliku wejściowego
process launch -i <file>
użyciu tej komendy, lldb zdaje się ignorować określony plik, zamiast czekania na dane z klawiatury.
Czy to zamierzone zachowanie? W takim razie; co muszę zrobić, aby proces obsługi mógł działać na żądanym pliku wejściowym?
tl; dr: Jak mogę dostać lldb naśladować standardowej wykonanie terminala np:
./executable < <file>
Aby wyjaśnić, twoja aplikacja jest napisana tak, aby zawsze czytać ze standardowego wejścia? –
@ Jonathon Reinhart Zakładam, że tak, ale nie jestem do końca pewien. Program IO mojego programu jest zdefiniowany w źródle generowanym przez flex i bison. Wzywam yyparse(), która z kolei wywołuje yylex(), która powinna wykonać IO. Plik wykonywalny został jednak uruchomiony poza debuggerem z plikiem tekstowym jako stdin i zachowywał się zgodnie z przeznaczeniem. Wykonano to w następujący sposób: ./executable plik_wyjściowy.txt –
'./powinalny plik infile.txt plik_zewarty.txt ma wartość ** nie ** oznacza, że program czyta ze standardowego wejścia. W rzeczywistości oznacza to coś przeciwnego - program oczekuje nazwy pliku w linii poleceń. Musisz przyjrzeć się 'int main' dla twojego programu i najpierw go zrozumieć. –