Add a simple test TestModuleAndSection.py to exercise some module/section-related APIs.

In particular, it iterates through the executable module's SBSections, looking for the
'__TEXT' section and further iterates on its subsections (of SBSection type, too).

llvm-svn: 140654
This commit is contained in:
Johnny Chen
2011-09-27 23:15:58 +00:00
parent f9b71a2e01
commit b2c7825515
3 changed files with 188 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
"""
Test some SBModule and SBSection APIs.
"""
import os, time
import re
import unittest2
import lldb
from lldbtest import *
class ModuleAndSectionAPIsTestCase(TestBase):
mydir = os.path.join("python_api", "module_section")
@python_api_test
def test_module_and_section(self):
"""Test module and section APIs."""
self.buildDefault()
self.module_and_section()
def module_and_section(self):
exe = os.path.join(os.getcwd(), "a.out")
target = self.dbg.CreateTarget(exe)
self.assertTrue(target, VALID_TARGET)
self.assertTrue(target.GetNumModules() > 0)
# Hide stdout if not running with '-t' option.
if not self.TraceOn():
self.HideStdout()
print "Number of modules for the target: %d" % target.GetNumModules()
for module in target.module_iter():
print module
# Get the executable module at index 0.
exe_module = target.GetModuleAtIndex(0)
print "Exe module: %s" % repr(exe_module)
print "Number of sections: %d" % exe_module.GetNumSections()
INDENT = ' ' * 4
for sec in exe_module.section_iter():
print sec
if sec.GetName() == "__TEXT":
print INDENT + "Number of subsections: %d" % sec.GetNumSubSections()
for subsec in sec:
print INDENT + repr(subsec)
if __name__ == '__main__':
import atexit
lldb.SBDebugger.Initialize()
atexit.register(lambda: lldb.SBDebugger.Terminate())
unittest2.main()