2013-08-17 39 views
5

Tôi có chương trình C++ mà tôi chạy bằng cách truyền chuỗi với nó.Đối số gỡ lỗi dựa trên chương trình C với gdb

g++ -o a main.cpp -lpthread 

và thực hiện nó với ./a "Good nice"

Nhưng làm thế nào để gỡ lỗi nó với gdb? chức năng gọi chính từ các tệp khác được bao gồm trong đó.

gdb ./a "Good nice" 

nhận "-" dưới dạng tệp và không có tệp như vậy!

Tôi muốn gỡ lỗi từng dòng!

+0

trùng lặp có thể xảy ra [Đi qua đối số cho chương trình chạy qua gdb] (http://stackoverflow.com/questions/4521015/passing-arguments-to-program- run-through-gdb) – Mark

+0

Cũng biên dịch chương trình của bạn bằng '-g' nếu không thì đây là tất cả đối với không có gì – aaronman

Trả lời

6

Sử dụng các tùy chọn --args gdb:

gdb --args ./a "Good nice" 

Ngoài ra thêm tùy chọn -g để gọi trình biên dịch của bạn, bởi vì nếu không gdb sẽ không thể kết nối thực thi của bạn với mã nguồn của bạn:

g++ -g -o a main.cpp -lpthread 
+0

anh ta cũng phải biên dịch với' -g' – aaronman

+0

@aaronman yes, để có thể sử dụng trình gỡ lỗi. Nhưng không phải là câu hỏi này về vấn đề đối số của chương trình? – cmaster

+0

Nếu anh ấy chỉ cho bạn cách anh ấy biên dịch nó và bạn biết nó sai và bạn không nói với anh ấy, câu trả lời của bạn có hữu ích không? – aaronman

3

gdb ./prog ->đặt argsstring ->chạy.

+0

Điều này sẽ thực hiện toàn bộ chương trình và cung cấp cho đầu ra. Tôi muốn gỡ lỗi theo từng dòng! – user123

5

Sử dụng gdb mà không tranh luận

gdb ./a 

Sau đó, trong gdb, trước khi chạy chương trình

set args "Good nice" 

Và bạn có thể xem những gì đối số bạn thiết lập, sử dụng

show args 

Xem here cho chi tiết.

+0

Một lưu ý phụ: Nếu trong trường hợp bạn có nghi ngờ ở giữa những gì bạn đã đặt, hãy sử dụng 'show args' – kingsmasher1

+0

@ kingsmasher1 Chính xác, tôi thêm câu trả lời đó vào câu trả lời. –

+0

sau thủ tục trên khi tôi nhấn 's' để bắt đầu dòng bằng cách gỡ lỗi dòng nó cho' chương trình không được chạy ' – user123

3

lựa chọn Anther là cung cấp luận cứ sau run

$gdb ./a 
run "Good nice" 
+0

Điều này trực tiếp cho thấy đầu ra cuối cùng, không có dòng bằng cách gỡ lỗi dòng! – user123

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