Dòng tiêu đề cơ bản nói lên tất cả.Trong GDB có thể đưa ra một địa chỉ tương đối (trong dòng) từ khi bắt đầu một hàm không?
Nếu tôi cung cấp vị trí dựa trên tệp và số dòng, giá trị đó có thể thay đổi nếu tôi chỉnh sửa tệp. Trong thực tế, nó có xu hướng thay đổi khá thường xuyên và một cách bất tiện nếu tôi chỉnh sửa nhiều hơn một hàm duy nhất trong quá trình tái cấu trúc. Tuy nhiên, nó ít có khả năng thay đổi nếu nó (line-) liên quan đến đầu của một hàm.
Trong trường hợp không thể cung cấp cho dòng bù đắp từ đầu của một hàm, thì có lẽ có thể sử dụng các biến tiện lợi để mô phỏng nó không? I E. nếu tôi sẽ khai báo các biến tiện lợi mà ánh xạ tới sự bắt đầu của một hàm cụ thể (một danh sách mà tôi sẽ tiếp tục cập nhật)?
Theo help break
dường như không có sẵn, nhưng tôi nghĩ tôi nên hỏi chắc chắn hơn.
(gdb) help break
Set breakpoint at specified line or function.
break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]
PROBE_MODIFIER shall be present if the command is to be placed in a
probe point. Accepted values are `-probe' (for a generic, automatically
guessed probe type) or `-probe-stap' (for a SystemTap probe).
LOCATION may be a line number, function name, or "*" and an address.
If a line number is specified, break at start of code for that line.
If a function is specified, break at start of code for that function.
If an address is specified, break at that exact address.
With no LOCATION, uses current execution address of the selected
stack frame. This is useful for breaking on return to a stack frame.
THREADNUM is the number from "info threads".
CONDITION is a boolean expression.
Multiple breakpoints at one place are permitted, and useful if their
conditions are different.
Do "help breakpoints" for info on other commands dealing with breakpoints.
Ngoài điểm thăm dò, tôi cũng đã sử dụng cú pháp 'phá vỡ hàm: nhãn' cho nhiều tác dụng tương tự trong quá khứ. đó cũng có thể là một lựa chọn. – matt
@TomTromey: SystemTap cũng là một Linux cụ thể, phải không? Trong khi đó ELF, GCC và GDB thì không. – 0xC0000022L
Vâng, SystemTap là đặc trưng cho Linux. Tuy nhiên, có thể sử dụng đầu dò sdt.h trên các hệ thống khác. Tôi đã không cố gắng nhưng tôi không thấy tại sao không. Toàn bộ mặt devel của đầu dò chỉ là một tập tin tiêu đề duy nhất ... –