A maneira mais fácil de fazer isso (se o seu gdb tiver suporte a python):
break *0xaddress
run
# target process is now stopped at breakpoint
python import time
python starttime=time.time()
continue
python print (time.time()-starttime)
Se o seu gdb não tiver suporte a python, mas puder executar comandos do shell, use-o:
shell echo set \$starttime=$(date +%s.%N) > ~/gdbtmp
source ~/gdbtmp
continue
shell echo print $(date +%s.%N)-\$starttime > ~/gdbtmp
source ~/gdbtmp
Como alternativa, você pode fazer com que o processo de destino chame gettimeofday ou clock_gettime , mas isso é muito mais entediante. Essas funções retornam o tempo escrevendo para variáveis no espaço de endereço do processo, o que você provavelmente teria que alocar chamando algo como malloc
, e isso pode não funcionar se o ponto de interrupção parou o programa no meio de uma chamada para outro malloc
ou free
.