2017-04-05 3 views
0

J'écris un pintool pour vider toutes les instructions avec pid, ID de thread, et l'adresse. Il est stocké à Github gistPin Intel PIN_GetPid obtenir une valeur erronée

Cependant, après avoir exécuté un exemple, le pid de la première instruction est le même que le pid dans la fonction principale, pas la même que la deuxième ou les instructions suivantes. La sortie est dans ce qui suit:

cerr Pid 7292========= cout 7292-0-b777c0d0-mov eax, esp 1c7c-0-b777c0d2-call 0xb777f790 1c7c-0-b777f790-push ebp 1c7c-0-b777f791-mov ebp, esp ......

Je ne sais pas pourquoi il se produit. Peut-être que j'utilise l'API PIN_GetPid dans le mauvais sens. Quelqu'un pourrait-il me donner un conseil?

Répondre

2

7292 en décimal est 0x1c7c en hexadécimal. std :: hex est maintenu à travers des invocations séparées du même flux.

Juste préfixez l'impression de pid avec std :: dec.

+1

bien repéré! :) – Neitsa

+1

Oui, vous avez raison. J'unifie toute la sortie au format hexadécimal. Ça marche bien. Merci beaucoup. J'apprécie beaucoup. –