Search code examples
debuggingwindbgbreakpointsconditional-breakpoint

How to put a breakpoint at the end of a function in windbg, so that I dont need to edit it even if some lines have been added/deleted in the source?


I need to log some data when some functions are hit, both at the start of execution and and the end of it. While i have no problem with putting breakpoints at the start of the functions(using bu [module]!functionname, I dont know how to put a breakpoint at the end of a function, SUCH THAT i dont need to edit the breakpoint everytime i add/delete somelines from the file/function. I'm sure its a very common scenario, just that I dont know how its done !! Can anyone elucidate ?


Solution

  • You can use the breakpoint at the start of the function to setup the breakpoint at the return address. Like this:

    bu [module]!functionname "bp /1 @$ra \".echo Exit functionname ; g\"; .echo Enter functionname; g"
    

    Caveat: this may not work if an exception is thrown in the function.