This is an automated email from the ASF dual-hosted git repository. wwbmmm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/brpc.git
The following commit(s) were added to refs/heads/master by this push: new 3680dbaf fix gdb bthread stack when using libc++ (#2516) 3680dbaf is described below commit 3680dbaf59db4dd3d928824e4ef60e30b3dca9c9 Author: Dongsheng He <ds_h...@163.com> AuthorDate: Mon Jan 22 15:42:36 2024 +0800 fix gdb bthread stack when using libc++ (#2516) --- tools/gdb_bthread_stack.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/gdb_bthread_stack.py b/tools/gdb_bthread_stack.py index 1ff4689c..bb500118 100644 --- a/tools/gdb_bthread_stack.py +++ b/tools/gdb_bthread_stack.py @@ -59,10 +59,12 @@ def get_bthread_num(): global_res = int(gdb.parse_and_eval("((*bthread::g_task_control)._nbthreads)._combiner._global_result")) get_agent = "(*(('bvar::detail::AgentCombiner<long, long, bvar::detail::AddTo<long> >::Agent' *){}))" last_node = root_agent + long_type = gdb.lookup_type("long") while True: agent = gdb.parse_and_eval(get_agent.format(last_node)) if last_node != root_agent: - val = int(agent["element"]["_value"]["_M_i"]) + val = int(agent["element"]["_value"].cast(long_type)) + gdb.parse_and_eval(get_agent.format(last_node)) global_res += val if agent["next_"] == root_agent: return global_res @@ -72,13 +74,13 @@ def get_all_bthreads(total): global bthreads bthreads = [] count = 0 - groups = int(gdb.parse_and_eval("'butil::ResourcePool<bthread::TaskMeta>::_ngroup'")["val"]) + groups = int(gdb.parse_and_eval("butil::ResourcePool<bthread::TaskMeta>::_ngroup")["val"]) for group in range(groups): - blocks = int(gdb.parse_and_eval("(*((*((('butil::static_atomic<butil::ResourcePool<bthread::TaskMeta>::BlockGroup*>' *)('butil::ResourcePool<bthread::TaskMeta>::_block_groups')) + {})).val)).nblock._M_i".format(group))) + blocks = int(gdb.parse_and_eval("(unsigned long)(*((*((('butil::static_atomic<butil::ResourcePool<bthread::TaskMeta>::BlockGroup*>' *)('butil::ResourcePool<bthread::TaskMeta>::_block_groups')) + {})).val)).nblock".format(group))) for block in range(blocks): - items = int(gdb.parse_and_eval("(*(*(('butil::atomic<butil::ResourcePool<bthread::TaskMeta>::Block*>' *)((*((*((('butil::static_atomic<butil::ResourcePool<bthread::TaskMeta>::BlockGroup*>' *)('butil::ResourcePool<bthread::TaskMeta>::_block_groups')) + {})).val)).blocks) + {}))._M_b._M_p).nitem".format(group, block))) + items = int(gdb.parse_and_eval("(*(*((butil::ResourcePool<bthread::TaskMeta>::Block**)((*((*((('butil::static_atomic<butil::ResourcePool<bthread::TaskMeta>::BlockGroup*>' *)('butil::ResourcePool<bthread::TaskMeta>::_block_groups')) + {})).val)).blocks) + {}))).nitem".format(group, block))) for item in range(items): - task_meta = gdb.parse_and_eval("*(('bthread::TaskMeta' *)((*(*(('butil::atomic<butil::ResourcePool<bthread::TaskMeta>::Block*>' *)((*((*((('butil::static_atomic<butil::ResourcePool<bthread::TaskMeta>::BlockGroup*>' *)('butil::ResourcePool<bthread::TaskMeta>::_block_groups')) + {})).val)).blocks) + {}))._M_b._M_p).items) + {})".format(group, block, item)) + task_meta = gdb.parse_and_eval("*(('bthread::TaskMeta' *)((*(*((butil::ResourcePool<bthread::TaskMeta>::Block**)((*((*((('butil::static_atomic<butil::ResourcePool<bthread::TaskMeta>::BlockGroup*>' *)('butil::ResourcePool<bthread::TaskMeta>::_block_groups')) + {})).val)).blocks) + {}))).items) + {})".format(group, block, item)) version_tid = (int(task_meta["tid"]) >> 32) version_butex = gdb.parse_and_eval("*(uint32_t *){}".format(task_meta["version_butex"])) if version_tid == int(version_butex) and int(task_meta["attr"]["stack_type"]) != 0: --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For additional commands, e-mail: dev-h...@brpc.apache.org