How do GDB watchpoints work? Can similar functionality be implemented to harness byte level access at defined locations?
How do GDB watchpoints work? Can similar functionality be implemented to harness byte level
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
I believe gdb uses the MMU so that the memory pages containing watched address ranges are marked as protected – then when an exception occurs for a write to a protected pages gdb handles the exception, checks to see whether the address of the write corresponds to a particular watchpoint, and then either resumes or drops to the gdb command prompt accordingly.
You can implement something similar for your own debugging code or test harness using mprotect, although you’ll need to implement an exception handler if you want to do anything more sophisticated than just fail on a bad write.