fix: auto print thread backtrace and exit with crash code when detected any thread stopped with exception reason (#601)
Co-authored-by: sylar <huangpeilin@agora.io>
diff --git a/src/scripts/lldb.py b/src/scripts/lldb.py
index 26d9a88..98fc50c 100644
--- a/src/scripts/lldb.py
+++ b/src/scripts/lldb.py
@@ -169,13 +169,21 @@
CloseOut()
os._exit(process.GetExitStatus())
elif printBacktraceTime is None and state == lldb.eStateStopped:
- selectedThread = process.GetSelectedThread()
- if selectedThread.GetStopReason() == lldb.eStopReasonNone:
- # During startup there are some stops for lldb to setup properly.
- # On iOS-16 we receive them with stop reason none.
- continue
+ haveException = False
+ allThreads = process.get_process_thread_list()
+ for thread in allThreads:
+ if(thread.GetStopReason() == lldb.eStopReasonException):
+ haveException = True
+ print_stacktrace(thread)
+ if haveException == False:
+ selectedThread = process.GetSelectedThread()
+ if selectedThread.GetStopReason() == lldb.eStopReasonNone:
+ # During startup there are some stops for lldb to setup properly.
+ # On iOS-16 we receive them with stop reason none.
+ continue
+ else:
+ print_stacktrace(selectedThread)
sys.stdout.write( '\\nPROCESS_STOPPED\\n' )
- print_stacktrace(process.GetSelectedThread())
CloseOut()
os._exit({exitcode_app_crash})
elif state == lldb.eStateCrashed: