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?

StackOverflow https://stackoverflow.com/questions/2566166

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top