gpt4 book ai didi

linux - 如何将 valgrind 线程 ID 与 gettid() 或 pthread_self() 匹配

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:30 64 4
gpt4 key购买 nike

Valgrind 在警告/错误消息中显示的线程 ID 似乎是自行生成的。它与来自 gettid() 或 pthread_self() 的线程 ID 不匹配。请找到随附的 valgrind 警告日志。在这种情况下,我如何将 valgrind 警告与我自己的线程相匹配,尤其是当 valgrind 错误未显示完整堆栈时?

[debug] [12034:12525] zwp_interfaces_time.c:221 zwp_time_report_handler(): time callback done
[function] [12034:12426] zwp_interfaces.c:220 zwp_interfaces_report_wait(): Function started
[debug] [12034:12426] zwp_interfaces.c:229 zwp_interfaces_report_wait(): 1
[debug] [12034:12525] zwp_interfaces_time.c:245 zwp_time_date_report_handler(): date callback start
[debug] [12034:12426] zwp_interfaces.c:267 zwp_interfaces_report_wait(): 4
==12034== Thread 5:
==12034== Invalid write of size 4
==12034== at 0x4DCB36E: ??? (in /home/debian/projecta/install/apr/lib/libapr-1.so.0.5.2)
==12034== Address 0x77a69d8 is on thread 5's stack
==12034== 16 bytes below stack pointer
==12034==
==12034== Conditional jump or move depends on uninitialised value(s)
==12034== at 0x4DCB518: ??? (in /home/debian/projecta/install/apr/lib/libapr-1.so.0.5.2)
==12034== Uninitialised value was created by a stack allocation
==12034== at 0x4DCB36E: ??? (in /home/debian/projecta/install/apr/lib/libapr-1.so.0.5.2)
==12034==
==12034== Use of uninitialised value of size 4
==12034== at 0x4DCB51A: ??? (in /home/debian/projecta/install/apr/lib/libapr-1.so.0.5.2)
==12034== Uninitialised value was created by a stack allocation
==12034== at 0x4DCB36E: ??? (in /home/debian/projecta/install/apr/lib/libapr-1.so.0.5.2)
==12034==
==12034== Use of uninitialised value of size 4
==12034== at 0x4DCB382: ??? (in /home/debian/projecta/install/apr/lib/libapr-1.so.0.5.2)
==12034== Uninitialised value was created by a stack allocation
==12034== at 0x4DCB36E: ??? (in /home/debian/projecta/install/apr/lib/libapr-1.so.0.5.2)
==12034==
[debug] [12034:12429] zwp_interfaces.c:397 zwp_execute_messages(): 1

Valgrind 线程 ID 是 5。我的线程 ID(来自 syscall(SYS_gettid))是 12525、12426、12429 等。

最佳答案

Valgrind 日志/消息输出不显示操作系统线程 ID。实现例如应该相对微不足道一个新的命令行选项:

   --show-lwpid=yes|no

可选择在日志/消息输出中添加 lwpid。所以,我建议在 valgrind bugzilla 上提交错误/愿望,然后可能会增加此功能很快出现的可能性将发布新版本:)。

与此同时,如果线程在流程执行,您可能会显示线程列表和链接通过使用 gdb 监视器命令“v.info scheduler”获取操作系统线程 ID。

例如在 shell 中,您可以执行以下操作:

vgdb v.info scheduler

您也可以从 gdb 或在您的代码中执行此操作。

关于linux - 如何将 valgrind 线程 ID 与 gettid() 或 pthread_self() 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51510356/

64 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com