Refactoring `stackTrace` to perform frame look ups in a more on-demand fashion to improve overall performance. Additionally adding additional information to the `exceptionInfo` request to report exception stacks there instead of merging the exception stack into the stack trace. The `exceptionInfo` request is only called if a stop event occurs with `reason='exception'`, which should mitigate the performance of `SBThread::GetCurrentException` calls. Adding unit tests for exception handling and stack trace supporting.
26 lines
841 B
Python
26 lines
841 B
Python
"""
|
|
Test exception behavior in DAP with signal.
|
|
"""
|
|
|
|
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
import lldbdap_testcase
|
|
|
|
|
|
class TestDAP_exception(lldbdap_testcase.DAPTestCaseBase):
|
|
@skipIfWindows
|
|
def test_stopped_description(self):
|
|
"""
|
|
Test that exception description is shown correctly in stopped
|
|
event.
|
|
"""
|
|
program = self.getBuildArtifact("a.out")
|
|
self.build_and_launch(program)
|
|
self.dap_server.request_continue()
|
|
self.assertTrue(self.verify_stop_exception_info("signal SIGABRT"))
|
|
exceptionInfo = self.get_exceptionInfo()
|
|
self.assertEqual(exceptionInfo["breakMode"], "always")
|
|
self.assertEqual(exceptionInfo["description"], "signal SIGABRT")
|
|
self.assertEqual(exceptionInfo["exceptionId"], "signal")
|