J'utilise UMDH (x64) pour tester les fuites de mémoire. Mon code n'est ni optimisé pour FPO ni utilisant des allocateurs personnalisés. Il utilise juste "nouveau" opérateur. «Créer une base de données de trace de pile en mode utilisateur» est activé dans les Gflags (x64) pour l'image en cours de test.UMDH ne donne pas de pile d'appels
J'ai suivi mon application en utilisant UMDH à la fois dans un cas non fuites et un cas qui fuit et obtenu les journaux dans les deux cas.
Et comparé les journaux avec UMDH. Il a choisi le bon pdb comme évident de ses lignes de commentaires dans le haut.
Problème:
La pile d'appels ne montre pas la pile de mon code. Il ne fait que suivre les noms génériques des fonctions Windows. J'ai essayé avec les deux versions de débogage et de publication en x64. Ai-je raté quelque chose?
Le code trace et diff obtenus sont ci-dessous:
// code:
#include <iostream>
using namespace std;
void myFunc()
{
int k;
cin >> k;
int* ii = new int[1998];
if (k == 0) delete[] ii;
}
int main()
{
myFunc();
return 0;
}
// stack trace obtained:
+ 390 ( 390 - 0) 1 allocs BackTraceAC905E8D
+ 1 ( 1 - 0) BackTraceAC905E8D allocations
ntdll!RtlpCallInterceptRoutine+0000003F
ntdll!RtlpAllocateHeapInternal+0000069F
ntdll!TppWorkerThread+00000ADB
KERNEL32!BaseThreadInitThunk+00000022
ntdll!RtlUserThreadStart+00000034
.....
.....
...
La qualité de symbole est pas très bon, il ne peut voir les fonctions exportées, assurez-vous de configurer le serveur de symboles avec le [environnement _NT_SYMBOL_PATH variable] (https : //msdn.microsoft.com/en-us/library/windows/hardware/ff553431 (v = vs.85) .aspx). TppWorkerThread est l'entrypoint pour un thread threadpool, pas votre code, [attention à Windows 10] (http://stackoverflow.com/a/34826385/17034). –
merci qui a fonctionné. – object