[lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'
I ran into the error in the subject when running a python script with "script myfile.myscript()". The value addr_t parameter used is 0x01223f68, the following works fine: (lldb) scr Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D. >>> e = lldb.SBError() >>> ptr = lldb.process.ReadPointerFromMemory(0x01223f68, e) >>> print ptr 0 >>> Any suggestion how to further investigate? Thanks. myfile.myscript() calls the following function in a loop (iterate through all vtable symbols), which contains the call ReadPointerFromMemory. def dump_vtbl(vtableAddr) : error = lldb.SBError() vtableEndAddr = lldb.process.ReadPointerFromMemory(vtableAddr+8, error) if not error.success : return False print "vtable: [%0.16x, %0.16x)" % (vtableAddr, vtableEndAddr) for addr in range(vtableAddr, vtableEndAddr, 8) : print "read from address %.016x" % addr try: funcAddr = lldb.process.ReadPointerFromMemory(addr, error) except: sys.exc_clear() continue if not error.success : continue ___ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
Re: [lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'
You passed an error into ReadPointerFromMemory. In the cases where you aren't getting what you expect, what does that error say? Jim > On Sep 16, 2016, at 5:06 PM, Lei Kong via lldb-dev > wrote: > > I ran into the error in the subject when running a python script with "script > myfile.myscript()". > > The value addr_t parameter used is 0x01223f68, the following works > fine: > > (lldb) scr > Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D. > >>> e = lldb.SBError() > >>> ptr = lldb.process.ReadPointerFromMemory(0x01223f68, e) > >>> print ptr > 0 > >>> > > Any suggestion how to further investigate? Thanks. > > myfile.myscript() calls the following function in a loop (iterate through all > vtable symbols), which contains the call ReadPointerFromMemory. > > def dump_vtbl(vtableAddr) : > error = lldb.SBError() > vtableEndAddr = lldb.process.ReadPointerFromMemory(vtableAddr+8, error) > if not error.success : > return False > print "vtable: [%0.16x, %0.16x)" % (vtableAddr, vtableEndAddr) > for addr in range(vtableAddr, vtableEndAddr, 8) : > print "read from address %.016x" % addr > try: > funcAddr = lldb.process.ReadPointerFromMemory(addr, error) > except: > sys.exc_clear() > continue > if not error.success : > continue > > ___ > lldb-dev mailing list > lldb-dev@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev ___ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
[lldb-dev] [Bug 30423] New: [lldb-mi] -var-assign doesn't evaluate the expression to assign
https://llvm.org/bugs/show_bug.cgi?id=30423 Bug ID: 30423 Summary: [lldb-mi] -var-assign doesn't evaluate the expression to assign Product: lldb Version: 3.9 Hardware: PC OS: All Status: NEW Severity: normal Priority: P Component: All Bugs Assignee: lldb-dev@lists.llvm.org Reporter: edmu...@microsoft.com CC: llvm-b...@lists.llvm.org Classification: Unclassified According to the MI documentation from GDB (http://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_231.html), the MI command -var-assign takes a variables object and an expression to assign to it -var-assign name expression However, lldb-mi does not allow expressions and only allows numeric values: -var-create - - "x" --thread 1 --frame 0 ^done,name="var0",numchild="0",value="1",type="int",thread-id="1",has_more="0" -var-assign var0 "3+2" ^error,msg="expression could not be evaluated" On the other hand, using GDB: -var-create - * "a" ^done,name="var5",numchild="0",value="0",type="int",thread-id="1",has_more="0" -1035-var-assign var5 "3+2" ^done,value="5" CMICmdCmdVarAssign should first try to evaluate the expression passed in rather than just treating it as a value. -- You are receiving this mail because: You are the assignee for the bug. ___ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
Re: [lldb-dev] OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t'
I tried printing error.descryption, but it didn't work, because when the error happens, it seems ReadPointerFromMemory never returned to my code. read from address 01223f68 Traceback (most recent call last): File "", line 1, in File "/home/leikong/repo/WindowsFabric/build.prod/test/fabdbg.py", line 289, in findall findtypes(pattern,ignorePureVirtualType) File "/home/leikong/repo/WindowsFabric/build.prod/test/fabdbg.py", line 246, in findtypes if ignorePureVirtualType and has_pure_virtual(vtableAddr, pureVirtualFuncs) : File "/home/leikong/repo/WindowsFabric/build.prod/test/fabdbg.py", line 190, in has_pure_virtual vtableEndAddr = lldb.process.ReadPointerFromMemory(vtableAddr-8, error) File "/home/leikong/bin/lldb/lib/python2.7/site-packages/lldb/__init__.py", line 9418, in ReadPointerFromMemory return _lldb.SBProcess_ReadPointerFromMemory(self, addr, error) OverflowError: in method 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t' > Subject: Re: [lldb-dev] OverflowError: in method > 'SBProcess_ReadPointerFromMemory', argument 2 of type 'lldb::addr_t' > From: jing...@apple.com > Date: Fri, 16 Sep 2016 17:12:24 -0700 > CC: lldb-dev@lists.llvm.org > To: leik...@msn.com > > You passed an error into ReadPointerFromMemory. In the cases where you > aren't getting what you expect, what does that error say? > > Jim > > > On Sep 16, 2016, at 5:06 PM, Lei Kong via lldb-dev > > wrote: > > > > I ran into the error in the subject when running a python script with > > "script myfile.myscript()". > > > > The value addr_t parameter used is 0x01223f68, the following works > > fine: > > > > (lldb) scr > > Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D. > > >>> e = lldb.SBError() > > >>> ptr = lldb.process.ReadPointerFromMemory(0x01223f68, e) > > >>> print ptr > > 0 > > >>> > > > > Any suggestion how to further investigate? Thanks. > > > > myfile.myscript() calls the following function in a loop (iterate through > > all vtable symbols), which contains the call ReadPointerFromMemory. > > > > def dump_vtbl(vtableAddr) : > > error = lldb.SBError() > > vtableEndAddr = lldb.process.ReadPointerFromMemory(vtableAddr+8, error) > > if not error.success : > > return False > > print "vtable: [%0.16x, %0.16x)" % (vtableAddr, vtableEndAddr) > > for addr in range(vtableAddr, vtableEndAddr, 8) : > > print "read from address %.016x" % addr > > try: > > funcAddr = lldb.process.ReadPointerFromMemory(addr, error) > > except: > > sys.exc_clear() > > continue > > if not error.success : > > continue > > > > ___ > > lldb-dev mailing list > > lldb-dev@lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev > ___ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev