2012-01-27 26 views
12

Dường như chuyển hướng đầu vào trong gdb không hoạt động trong Cygwin ví dụgdb đầu vào chuyển hướng sử dụng Cygwin

(gdb) run < input.txt 

Có cách khác để chuyển hướng đầu vào trong gdb của Cygwin ??

+3

Đây là giới hạn của Cygwin, có nhiều giải pháp khác nhau cho điều đó, bạn có thể thử các giải pháp của câu hỏi liên quan này: http://stackoverflow.com/questions/3544325/input-redirection-in-gdb-mingw – speedblue

Trả lời

12

Thật không may điều này là không thể khi chạy gdb trong Cygwin. bug tồn tại trong một thời gian dài, nhưng có vẻ như đó là một điều khó giải quyết - và có lẽ gdb devs thích dành thời gian cho các tính năng/vấn đề liên quan đến các môi trường phổ biến hơn (như Linux).

Có nhiều cách giải quyết khác nhau; Tôi thích cái đầu tiên vì nó sạch và hữu ích nhất khi không gỡ lỗi/chạy trên cygwin:

  • Thêm đối số dòng lệnh, ví dụ: -f whatever với whatever là tên tệp để đọc. Nếu đối số không hiện diện hoặc được đặt thành -, hãy đọc từ stdin. Tùy chọn -f - là tùy chọn của khóa học nhưng đối số chấp nhận tên tệp là tiêu chuẩn chung (miễn là nó có ý nghĩa) để xử lý - là "sử dụng stdin/out".
  • Sử dụng gdb Hack nêu here để remap stdin vào một tập tin bằng tay mở bên trong ứng dụng:

    > gdb yourexecutable 
    (gdb) break main 
    (gdb) run 
    (gdb) call dup2(open("input.txt", 0), 0) 
    (gdb) continue 
    

    này đặt một breakpoint trên main chức năng, sau đó thực hiện các chương trình đó sẽ phá vỡ ngay sau khi nhập main. Sau đó, dup2 được sử dụng để thay thế fdin fd (0) bằng bộ mô tả tệp của tệp đầu vào.

Các vấn đề liên quan