diff options
author | Bernhard Urban-Forster <lewurm@gmail.com> | 2019-10-07 17:16:13 +0300 |
---|---|---|
committer | monojenkins <jo.shields+jenkins@xamarin.com> | 2019-10-07 17:16:13 +0300 |
commit | 6861610662f19ee74f8f28ba00976b9f4641ee4b (patch) | |
tree | 25314936399a6bbae4f7ce4a2bf656cbb5328fb1 /data/lldb/monobt.py | |
parent | 18fac0a24190cb3f90057d86232e773758bb1284 (diff) |
[lldb] use mono_method_full_name helper (#16934)
[lldb] use mono_method_full_name helper
Instead of:
```
(lldb) mbt 20
* thread #11
* frame #0: 0x1bf28f28 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x1bf9caac libsystem_pthread.dylib`pthread_kill + 300
frame #2: 0x1be66080 libsystem_c.dylib`abort + 140
frame #3: 0x024bdfa0 monotouchtest`log_callback(log_domain=0x00000000, log_level="error", message="../../../../../mono/metadata/object.c:1905: Expected GC Unsafe mode but was in STATE_BLOCKING state", fatal=4, user_data=0x00000000) at runtime.m:1251:3
frame #4: 0x02487f44 monotouchtest`monoeg_g_logv_nofree(log_domain=0x00000000, log_level=G_LOG_LEVEL_ERROR, format=<unavailable>, args=<unavailable>) at goutput.c:149:2 [opt]
frame #5: 0x02487ee0 monotouchtest`monoeg_g_logv(log_domain=<unavailable>, log_level=<unavailable>, format=<unavailable>, args=<unavailable>) at goutput.c:156:10 [opt]
frame #6: 0x02487f74 monotouchtest`monoeg_g_log(log_domain=<unavailable>, log_level=<unavailable>, format=<unavailable>) at goutput.c:165:2 [opt]
frame #7: 0x024694c4 monotouchtest`assert_gc_unsafe_mode(file="../../../../../mono/metadata/object.c", lineno=1905) at checked-build.c:396:3 [opt]
frame #8: 0x023d2f64 monotouchtest`mono_class_vtable_checked(domain=0x16d64800, klass=0x173c1b98, error=0x194b0ee8) at object.c:1905:2 [opt]
frame #9: 0x024130a8 monotouchtest`get_current_thread_ptr_for_domain(domain=0x16d64800, thread=0x02db45d0) at threads.c:635:2 [opt]
frame #10: 0x024119a8 monotouchtest`mono_thread_current at threads.c:2026:23 [opt]
frame #11: 0x02416998 monotouchtest`mono_thread_interruption_checkpoint_request(bypass_abort_protection=0) at threads.c:5101:35 [opt]
Messaging::void_objc_msgSendSuper @ 388435850 "calli.nat.fast" || frame #12: 0x024d5de8 monotouchtest`interp_exec_method_full(frame=0x194b11c0, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3230:4 [opt]
ObjCExceptionTest::InvokeManagedExceptionThrower @ 388435752 "vcall" || frame #13: 0x024d64dc monotouchtest`interp_exec_method_full(frame=0x194b1380, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3400:4 [opt]
ExceptionsTest::ManagedExceptionPassthrough @ 388502134 "vcallvirt.fast" || frame #14: 0x024d61c0 monotouchtest`interp_exec_method_full(frame=0x194b14e0, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3325:4 [opt]
Object::runtime_invoke_direct_void__this__ @ 388462550 "vcall" || frame #15: 0x024d64dc monotouchtest`interp_exec_method_full(frame=0x194b1598, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3400:4 [opt]
frame #16: 0x024d46ec monotouchtest`interp_runtime_invoke(method=<unavailable>, obj=0x0302c5f0, params=0x00000000, exc=0x194b166c, error=0x194b18c8) at interp.c:1766:2 [opt]
frame #17: 0x0232b39c monotouchtest`mono_jit_runtime_invoke(method=0x174fda58, obj=<unavailable>, params=0x00000000, exc=<unavailable>, error=0x194b18c8) at mini-runtime.c:3170:12 [opt]
frame #18: 0x023d5cc8 monotouchtest`do_runtime_invoke(method=0x174fda58, obj=0x0302c5f0, params=0x00000000, exc=0x00000000, error=0x194b18c8) at object.c:3017:11 [opt]
frame #19: 0x023d26a0 monotouchtest`mono_runtime_invoke_checked(method=<unavailable>, obj=<unavailable>, params=<unavailable>, error=<unavailable>) at class-getters.h:24:1 [opt] [artificial]
```
It prints now:
```
(lldb) mbt 20
* thread #11
* frame #0: 0x1bf28f28 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x1bf9caac libsystem_pthread.dylib`pthread_kill + 300
frame #2: 0x1be66080 libsystem_c.dylib`abort + 140
frame #3: 0x024bdfa0 monotouchtest`log_callback(log_domain=0x00000000, log_level="error", message="../../../../../mono/metadata/object.c:1905: Expected GC Unsafe mode but was in STATE_BLOCKING state", fatal=4, user_data=0x00000000) at runtime.m:1251:3
frame #4: 0x02487f44 monotouchtest`monoeg_g_logv_nofree(log_domain=0x00000000, log_level=G_LOG_LEVEL_ERROR, format=<unavailable>, args=<unavailable>) at goutput.c:149:2 [opt]
frame #5: 0x02487ee0 monotouchtest`monoeg_g_logv(log_domain=<unavailable>, log_level=<unavailable>, format=<unavailable>, args=<unavailable>) at goutput.c:156:10 [opt]
frame #6: 0x02487f74 monotouchtest`monoeg_g_log(log_domain=<unavailable>, log_level=<unavailable>, format=<unavailable>) at goutput.c:165:2 [opt]
frame #7: 0x024694c4 monotouchtest`assert_gc_unsafe_mode(file="../../../../../mono/metadata/object.c", lineno=1905) at checked-build.c:396:3 [opt]
frame #8: 0x023d2f64 monotouchtest`mono_class_vtable_checked(domain=0x16d64800, klass=0x173c1b98, error=0x194b0ee8) at object.c:1905:2 [opt]
frame #9: 0x024130a8 monotouchtest`get_current_thread_ptr_for_domain(domain=0x16d64800, thread=0x02db45d0) at threads.c:635:2 [opt]
frame #10: 0x024119a8 monotouchtest`mono_thread_current at threads.c:2026:23 [opt]
frame #11: 0x02416998 monotouchtest`mono_thread_interruption_checkpoint_request(bypass_abort_protection=0) at threads.c:5101:35 [opt]
(wrapper managed-to-native) ApiDefinition.Messaging:void_objc_msgSendSuper (intptr,intptr) @ 388435850 "calli.nat.fast" || frame #12: 0x024d5de8 monotouchtest`interp_exec_method_full(frame=0x194b11c0, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3230:4 [opt]
Bindings.Test.ObjCExceptionTest:InvokeManagedExceptionThrower () @ 388435752 "vcall" || frame #13: 0x024d64dc monotouchtest`interp_exec_method_full(frame=0x194b1380, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3400:4 [opt]
MonoTouchFixtures.ObjCRuntime.ExceptionsTest:ManagedExceptionPassthrough () @ 388502134 "vcallvirt.fast" || frame #14: 0x024d61c0 monotouchtest`interp_exec_method_full(frame=0x194b14e0, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3325:4 [opt]
(wrapper runtime-invoke) object:runtime_invoke_direct_void__this__ (object,intptr,intptr,intptr) @ 388462550 "vcall" || frame #15: 0x024d64dc monotouchtest`interp_exec_method_full(frame=0x194b1598, context=<unavailable>, clause_args=<unavailable>, error=<unavailable>) at interp.c:3400:4 [opt]
frame #16: 0x024d46ec monotouchtest`interp_runtime_invoke(method=<unavailable>, obj=0x0302c5f0, params=0x00000000, exc=0x194b166c, error=0x194b18c8) at interp.c:1766:2 [opt]
frame #17: 0x0232b39c monotouchtest`mono_jit_runtime_invoke(method=0x174fda58, obj=<unavailable>, params=0x00000000, exc=<unavailable>, error=0x194b18c8) at mini-runtime.c:3170:12 [opt]
frame #18: 0x023d5cc8 monotouchtest`do_runtime_invoke(method=0x174fda58, obj=0x0302c5f0, params=0x00000000, exc=0x00000000, error=0x194b18c8) at object.c:3017:11 [opt]
frame #19: 0x023d26a0 monotouchtest`mono_runtime_invoke_checked(method=<unavailable>, obj=<unavailable>, params=<unavailable>, error=<unavailable>) at class-getters.h:24:1 [opt] [artificial]
```
<!--
Thank you for your Pull Request!
If you are new to contributing to Mono, please try to do your best at conforming to our coding guidelines http://www.mono-project.com/community/contributing/coding-guidelines/ but don't worry if you get something wrong. One of the project members will help you to get things landed.
Does your pull request fix any of the existing issues? Please use the following format: Fixes #issue-number
-->
Diffstat (limited to 'data/lldb/monobt.py')
-rw-r--r-- | data/lldb/monobt.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/data/lldb/monobt.py b/data/lldb/monobt.py index e9e7d7d9f2a..f84156c5dac 100644 --- a/data/lldb/monobt.py +++ b/data/lldb/monobt.py @@ -2,7 +2,7 @@ import lldb def print_frames(thread, num_frames, current_thread): # TODO: Make output header similar to bt. - print '%c thread #%i' % ('*' if current_thread else ' ', thread.idx) + print('%c thread #%i' % ('*' if current_thread else ' ', thread.idx)) if current_thread: selected_frame = thread.GetSelectedFrame() @@ -14,17 +14,16 @@ def print_frames(thread, num_frames, current_thread): if function_name == "interp_exec_method_full": try: s = 'frame->imethod->method' - klassname = frame.EvaluateExpression('(char*) ' + s + '->klass->name').summary[1:-1] - methodname = frame.EvaluateExpression('(char*) ' + s + '->name').summary[1:-1] + methoddesc = frame.EvaluateExpression('(char*) mono_method_full_name (' + s + ', 1)').summary[1:-1] ipoffset = frame.EvaluateExpression('ip').GetValueAsUnsigned() insn = '' if ipoffset != 0: ipoffset -= frame.EvaluateExpression('imethod->code').GetValueAsUnsigned() insn = "\"" + frame.EvaluateExpression('mono_interp_opname [*ip]').summary[1:-1] + "\"" - var = '%s::%s @ %d %s || %s' % (klassname, methodname, ipoffset, insn, frame) + var = '%s @ %d %s || %s' % (methoddesc, ipoffset, insn, frame) except Exception as e: - print "DBG: execfail:" + str(e) + print("DBG: execfail:" + str(e)) elif function_name == "mono_interp_transform_method": try: s = 'runtime_method->method' @@ -32,7 +31,7 @@ def print_frames(thread, num_frames, current_thread): methodname = frame.EvaluateExpression('(char*) ' + s + '->name').summary[1:-1] var = 'transforming %s::%s || %s' % (klassname, methodname, frame) except Exception as e: - print "DBG: transformfail:" + str(e) + print("DBG: transformfail:" + str(e)) elif pc[0] == '0': try: framestr = frame.EvaluateExpression('(char*)mono_pmip((void*)%s)' % pc).summary[1:-1] @@ -40,7 +39,7 @@ def print_frames(thread, num_frames, current_thread): except: pass - print ' %c %s' % ('*' if current_thread and frame.idx == selected_frame.idx else ' ', var) + print(' %c %s' % ('*' if current_thread and frame.idx == selected_frame.idx else ' ', var)) def monobt(debugger, command, result, dict): opts = {'all_bt': False, 'num_frames': None} @@ -50,20 +49,20 @@ def monobt(debugger, command, result, dict): elif command.isdigit(): opts['num_frames'] = int(command) elif command != '': - print 'error: monobt [<number>|all]' + print('error: monobt [<number>|all]') return target = debugger.GetSelectedTarget() process = target.process if not process.IsValid(): - print 'error: invalid process' + print('error: invalid process') return if opts['all_bt']: for thread in process.threads: print_frames(thread, len(thread), process.selected_thread == thread) - print '' + print('') else: thread = process.selected_thread num_frames = len(thread) if opts['num_frames'] is None else opts['num_frames'] @@ -76,4 +75,4 @@ def __lldb_init_module (debugger, dict): # Add any commands contained in this module to LLDB debugger.HandleCommand('command script add -f monobt.monobt monobt') debugger.HandleCommand('command alias mbt monobt') - print '"monobt" command installed' + print('"monobt" command installed') |