我正在使用strace / ltrace监视进程,希望找到并拦截一个检查并可能激活某种全局共享锁的调用.
虽然我以前曾经在Linux上处理过几种形式的进程间锁定,但我还是要查找要查找的内容.
目前我唯一的嫌疑人是futex(),它在执行过程中很早就出现了.
Update0
关于我追求的是什么有一些混乱.我正在监视现有进程以调用持久进程间内存或等效内存.我想知道要查找的系统和库调用.我无意自称这些,所以自然会出现futex(),我相信很多库都会根据这个来实现锁定调用等.
UPDATE1
我想要一个函数名列表或文档链接,我应该在ltrace和strace级别监视(并指定哪个).关于如何跟踪和定位全局锁定的任何其他好建议都会很棒.
最佳答案
如果您可以在valgrind中启动受监视的进程,那么有两个项目:
原文链接:/linux/439855.htmlhttp://code.google.com/p/data-race-test/wiki/ThreadSanitizer
和赫尔格林德
@L_301_2@
Helgrind is aware of all the pthread
abstractions and tracks their effects
as accurately as it can. On x86 and
amd64 platforms,it understands and
partially handles implicit locking
arising from the use of the LOCK
instruction prefix.
因此,这些工具甚至可以检测原子内存访问.他们将检查pthread的使用情况