gpt4 book ai didi

c++ - strace 会阻止程序的正常执行吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:33 25 4
gpt4 key购买 nike

我想知道 strace 是否会导致它正在跟踪的程序出现异常。目前,我正在尝试跟踪一个随机段错误错误(但当我使用 strace 时,程序似乎永远不会以这种方式崩溃),这是在我调用 pthread_cond_wait() 的行中引起的。 .

当我直接运行我的程序时——实际上是 c/c++ 的混合,它有时会按预期运行,但如前所述,有时它会在 pthread_cond_wait() 处崩溃。 (顺便说一下,如果有人想帮助我解决这个问题,see here,我们将不胜感激)。

如果我直接运行我的程序并像这样将 strace 附加到进程:

strace -ttTD -o strace_today.txt -p PROCESS_ID

输出是单行代码,表示它正在等待 futex(实际上是这样的:)

futex(x,FUTEX_WAIT_PRIVATE,x)

如果我像这样从 strace 运行我的程序:

strace -ttTD -o strace_today.txt example_program

然后在我的文件输出的某个时刻,准确地说,当我调用 pthread_cond_wait() 时, 它会像这样用多行发送垃圾邮件(每次,futex() 调用等待的值都比以前高,这里是 15)

12:46:15.636366 semop(11599962, {{0, -1, 0}}, 1) = 0 <0.000031>
12:46:15.636512 futex(0x8053838, FUTEX_WAKE_PRIVATE, 1) = 0 <0.000033>
12:46:15.636637 futex(0x8053864, FUTEX_WAIT_PRIVATE, 15, NULL) = ? ERESTARTSYS (To be restarted) <0.002034>
12:46:15.638832 futex(0x8053864, FUTEX_WAIT_PRIVATE, 15, NULL) = 0 <0.001449>
12:46:15.640436 clone(child_stack=0xb6cd0484, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb6cd0bd8, {entry_number:6, base_addr:0xb6cd0b70, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0xb6cd0bd8) = 25403 <0.000045>
12:46:15.640598 semop(11599962, {{0, -1, 0}}, 1) = 0 <0.000015>

我还尝试将 strace 作为子进程而不是进程的父进程运行(希望它会有所作为)。即使我试图捕获那个随机段错误,它也从未出现/发生过。

现在我的问题是这是否是常见的和故意的,或者我的 strace-call 是否是假的。如果不是,是否有任何我需要注意的系统调用,因为它们可能不适用于 strace,或者这种奇怪的行为是否涉及一组系统调用?有什么办法解决这个问题吗?

如果相关的话,我正在使用 debian-squeeze。

更新1

我完全忘了提及我正在运行多个线程(POSIX 线程)和几个子线程。虽然 pthread_cond_wait()不应该遇到任何比赛,因为它绝对是 pthread_mutex_lock() 之后的第一个电话访问 pthread_cond_tpthread_mutex_t我正在将其解析为参数。但不知里面是否有pthread_cond_wait()可能是任何竞争条件。如果需要,我会提供程序代码。

最佳答案

造成此类问题的最可能原因是 strace 会影响您的应用程序的计时,这可能会暴露锁定错误。

关于c++ - strace 会阻止程序的正常执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11914097/

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