2012-10-17 25 views
7

Tôi thường thấy hữu ích khi đi bộ ngăn xếp khi tôi đang gỡ lỗi chương trình và nhận các biểu tượng cho bất kỳ giá trị con trỏ có kích thước phù hợp nào. Tôi đã bị bệnh làm điều này bằng tay và vì vậy tôi đã cố gắng viết một lệnh mà nó cho tôi. Vấn đề là "biểu tượng thông tin" dường như không thích sử dụng biến tiện lợi làm tham số của nó khi tham số của nó được đặt qua dereference của con trỏ. IE:Nhận thông tin biểu tượng cho giá trị được giữ trong biến thuận tiện GDB

(gdb) info symbol 0xb6ca4d28 
[Useful Symbol Information] 
(gdb) set $pointer = $esp 
(gdb) while (*(int*)$pointer != 0xb6ca4d28) 
>set $pointer += 4 
>end 
(gdb) x/x $pointer 
0x6ebee064:  0xb6ca4d28 
(gdb) set $dereferencePointer = *(int *)$pointer 
(gdb) p/x $dereferencePointer 
$103 = 0xb6ca4d28 
(gdb) info symbol $dereferencePointer 
No symbol matches $dereferencePointer. 
(gdb) set $dereferencePointer = 0xb6ca4d28 
(gdb) p/x $dereferencePointer 
$104 = 0xb6ca4d28 
(gdb) info symbol $dereferencePointer 
[Useful symbol information] 
(gdb) 

Tại sao điều này? Đây có phải là một lỗi? Có cách nào khác để làm điều này không?

Cảm ơn!

Luc

PS: Sử dụng vani GDB 7,5

Cập nhật từ danh sách:

này rất có thể là một lỗi.

+1

Có thể danh sách gửi thư liên quan đến 'gdb' có thể là nơi tốt hơn để hỏi. –

+0

Để theo dõi: Không tìm thấy gdb tương đương với các câu hỏi freebsd, tôi đã đăng câu hỏi này lên danh sách gdb chung và chưa nhận được phản hồi. Nếu tôi làm thế, tôi sẽ cập nhật câu hỏi. – shroudednight

+0

Đối với hồ sơ, điều này dường như hoạt động tốt trên 'GNU gdb (GDB) 7.3.50.20111117-cvs-debian' – Jester

Trả lời

1

Lỗi hay không, tôi khuyên bạn nên sử dụng trình định dạng/a với định dạng p và x. Điều này luôn luôn làm việc cho tôi, và nhanh hơn để gõ, quá.

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