Tôi đang sử dụng lldb làm trình gỡ lỗi độc lập trong OSX. Tôi đang cố gắng để gỡ lỗi một C thực thi, bằng cách sử dụng một tập tin văn bản như đầu vào. Tài liệu lldb chỉ định lệnh sau đây để thay đổi stdin thành một tệp nhất định:Không thể nhận lldb để đọc tệp nhập
process launch -i <file>
Sử dụng lệnh này, lldb dường như bỏ qua tệp được chỉ định, thay vì chờ nhập bàn phím.
Hành vi này có dự định không? Nếu vậy; Tôi cần phải làm gì để thực sự có được quy trình hoạt động trên tệp đầu vào mong muốn của mình?
tl; dr: Làm thế nào để tôi nhận được LLĐB để bắt chước một hành thiết bị đầu cuối tiêu chuẩn như:
./executable < <file>
Để làm rõ, đơn đăng ký của bạn được viết để luôn đọc từ stdin? –
@JonathonReinhart Tôi giả sử như vậy, nhưng tôi không hoàn toàn chắc chắn. IO chương trình của tôi được định nghĩa trong nguồn được tạo ra bởi flex và bison. Tôi gọi yyparse() mà lần lượt gọi yylex(), mà nên làm IO. Tuy nhiên, tệp thực thi đã được chạy bên ngoài trình gỡ rối với tệp văn bản là stdin và được xử lý như dự định. Nó được thực hiện như sau: ./executable outputfile.txt –
'./executable infile.txt outfile.txt' không ** không ** có nghĩa là chương trình đang đọc từ stdin. Trong thực tế, nó ngụ ý ngược lại - rằng chương trình đang mong đợi một tên tập tin trên dòng lệnh. Bạn cần phải nhìn vào 'int main' cho chương trình của bạn và hiểu nó trước tiên. –