Como colocar um ponto de interrupção no final de uma função no windbg, para que eu não precise editá -lo, mesmo que algumas linhas tenham sido adicionadas/excluídas na fonte?
-
23-09-2019 - |
Pergunta
Preciso registrar alguns dados quando algumas funções são atingidas, tanto no início da execução quanto no final. Embora eu não tenha nenhum problema em colocar pontos de interrupção no início das funções (usando bu [module]!functionname
, Eu não sei como colocar um ponto de interrupção no final de uma função, de modo que não preciso editar o ponto de interrupção toda vez que adiciono/exclua algumas linhas do arquivo/função. Tenho certeza de que é um cenário muito comum, só que não sei como é feito !! Alguém pode elucidar?
Solução
Você pode usar o ponto de interrupção no início da função para configurar o ponto de interrupção no endereço de retorno. Assim:
bu [module]!functionname "bp /1 @$ra \".echo Exit functionname ; g\"; .echo Enter functionname; g"
Advertência: Isso pode não funcionar se uma exceção for lançada na função.
Outras dicas
Aqui está o que você está procurando exatamente
Obtenha valores de retorno da função e informações de criação de criação
É explicado como definir um ponto de interrupção no retorno da função
O mesmo é aplicável ao código nativo também.
Espero que isto ajude.
Você pode usar o comando pt, o que significa passo para o próximo retorno. Por exemplo, quando você atinge sua função no imploramento, digite apenas o comando pt atingir o código em onde o retorno foi chamado.