| """ |
| Test the robustness of lldb expression parser. |
| """ |
| |
| import os, time |
| import unittest2 |
| import lldb |
| from lldbtest import * |
| |
| class Radar8638051TestCase(TestBase): |
| |
| mydir = os.path.join("expression_command", "radar_8638051") |
| |
| def test_expr_commands(self): |
| """The following expression commands should not crash.""" |
| self.buildDefault() |
| |
| self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) |
| |
| self.runCmd("breakpoint set -n c") |
| |
| self.runCmd("run", RUN_SUCCEEDED) |
| |
| self.expect("expression val", |
| startstr = "(int) $0 = 1") |
| # (int) $0 = 1 |
| |
| self.expect("expression *(&val)", |
| startstr = "(int) $1 = 1") |
| # (int) $1 = 1 |
| |
| # rdar://problem/8638051 |
| # lldb expression command: Could this crash be avoided |
| self.expect("expression &val", |
| startstr = "(int *) $2 = ") |
| # (int *) $2 = 0x.... |
| |
| |
| if __name__ == '__main__': |
| import atexit |
| lldb.SBDebugger.Initialize() |
| atexit.register(lambda: lldb.SBDebugger.Terminate()) |
| unittest2.main() |