2012-10-27 34 views
24

Tôi có một chương trình và tôi đang cố gắng gỡ lỗi nó bằng gdb. Bên trong chương trình, tôi có các phương thức yêu cầu người dùng nhập một đầu vào bằng cách sử dụng stdin. Làm thế nào tôi có thể nhập đầu vào này khi tôi đang ở trong gdb? Để tôi có thể theo dõi các phương pháp của tôi hoạt động như thế nào?Làm thế nào để gỡ lỗi một chương trình lấy đầu vào của người dùng từ stdin với GDB?

+0

Đối với trường hợp đầu vào trực tiếp đơn giản hơn, câu hỏi giống như sau: http://stackoverflow.com/questions/455544 Tuy nhiên, có những trường hợp không bao gồm: 1) bạn cần xem stdout để quyết định stdin 2) thời gian thực tế và bấm phím là cần thiết như trong ncurses. Trong những trường hợp đó, có thể mong đợi có thể làm điều đó: http://stackoverflow.com/questions/5579901/automated-test-tools-for-linux-ncurses –

Trả lời

21
$ cat >foo <<EOF 
something 
EOF 
$ gdb -quiet /bin/cat 
Reading symbols from /bin/cat...(no debugging symbols found)...done. 
Missing separate debuginfos, use: debuginfo-install coreutils-8.12-7.fc16.x86_64 
(gdb) run <foo 
Starting program: /bin/cat <foo 
something 
[Inferior 1 (process 22436) exited normally] 
(gdb) 
1

Tôi vừa trải qua một vài thứ như thế này hôm qua và đệ trình thông qua một loạt lệnh "trợ giúp" trong gdb vì tôi không thể tìm thấy chính xác những gì tôi cần trên Internet.

Tôi đã sử dụng set variable *your_variable* = *your desired input* sau khi tôi đã bắt đầu gdb và bắt đầu chạy mã của mình. Làm việc như người ở.

Tôi biết điều này là muộn, nhưng có thể nó sẽ giúp người khác.

+1

Bạn sẽ sử dụng nó như thế nào cho stdin? – Aralox

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