Hoe krijg ik de backtrace voor alle threads in GDB?

Is er een equivalente opdracht in GDB als die van WinDbg’s !process 0 7?

Ik wil alle threads in een dumpbestand uitpakken, samen met hun backtraces in GDB. info threadsvoert de stacktraces niet uit. Dus, is er een commando dat dat wel doet?


Antwoord 1, autoriteit 100%

Over het algemeen wordt de backtrace gebruikt om de stapel van de huidige thread op te halen, maar als het nodig is om de stacktrace van alle threads te krijgen, gebruik dan de volgende opdracht.

thread apply all bt

Antwoord 2, autoriteit 19%

Is er een commando dat dat wel doet?

thread apply all where

Antwoord 3, autoriteit 2%

Bij het debuggen met meerdere threads is het ook handig om naar een bepaald threadnummer te schakelen en alleen de backtrace voor die thread te krijgen.

Van de GNU GDB-threads documentatie

Voor foutopsporingsdoeleinden associeert GDB zijn eigen threadnummer – een klein geheel getal toegewezen in de volgorde van het maken van de thread – met elke thread in uw programma.

Gebruik:

info threads

Identificeer vervolgens de thread die u wilt bekijken.

thread <thread_id>

Gebruik ten slotte backtrace voor alleen die thread:

bt

Other episodes