Mein Chef möchte, dass ich in unserem Java-Client für unsere Tester einen "One-Button-Memory-Leak-Checker" schreibe (da ich dann weniger Zeit damit verbringen müsste, unsere komplette manuelle Testsuite unter einem Profiler laufen zu lassen; habe keine automatisierte Testsuite.Wie erhalten * native * Stack-Trace bei Fehler für Java native Agent?
Ich habe etwas gefunden, das ziemlich nah an dem ist, was ich brauche: Heap Walker Ich musste es leicht ändern, um in VS in Windows zu kompilieren (ich denke, es wurde für GCC unter Mac gemacht). Aber wenn ich es starte, stürzt die JVM ab.
Ich möchte eine native Stack-Trace bekommen, um zumindest zu sehen, wo es abstürzt, und wenn ich herausfinden kann, was passiert, aber idk wie. Ich habe eine "Debug" DLL erstellt, aber ich bekomme immer noch keine Stack-Trace. Weder auf der Konsole noch in der von der JVM generierten Datei "hs_err_pidXXXX.log".
Ich habe keine C/C++ in etwa 15 Jahren getan; Ich kann immer noch "raten", was der Code macht, aber ich habe vergessen, wie das Debugging abläuft (jenseits von "printf everywhere" ...), und ich musste nie nativen Code in der JVM debuggen. Bisher war Google keine Hilfe; Ich benutze wahrscheinlich die falschen Begriffe, um zu suchen.
Read [diese] (https://jpassing.com/tag/stacktrace-dbghelp/) oder [diese] (http: // www. codeproject.com/Articles/11132/Walking-the-callstack). Aber es ist vielleicht *** einfacher, einen Java-Heap-Dump ('jmap -dump: file =') zu bekommen und ihn mit einem Tool wie ** [HeapAnalyzer] (https: // www .ibm.com/developerworks/community/groups/service/html/communityview? communityUuid = 4544bafe-c7a2-455f-9d43-eb866ea60091) ** –
rustyx
es sei denn, Sie tun es zum Zwecke der Zuweisung Callsite Recording Stack Spuren sind unwahrscheinlich hilft Ihnen bei der Diagnose eines Speicherlecks. – the8472
Wenn der Agent funktioniert, würde es mir sagen, wo auf etwas verwiesen wird, das nicht mehr da sein sollte. Aber mein Problem ist, dass es abstürzt, was an sich nichts mit einem möglichen Speicherverlust zu tun hat. –