有没有人知道怎么能看到函数真实的系统调用

2019-09-12 09:44:27 +08:00
 blueberryman

我现在想到的就是用 strace 看带 pthread_con_wait 函数的文件,但是这样的话,pthread_con_wait 的系统调用会跟其它的函数混在一起,有什么办法能直接看到吗?或者 linux 官方有说明文档吗?感觉 man 的东西太少了,没说实现原理

3809 次点击
所在节点    Linux
8 条回复
nthhdy
2019-09-12 12:13:23 +08:00
直接看到是指啥?
strace + grep 不行吗
feather12315
2019-09-12 12:50:28 +08:00
ltrace 看 library 调用,
strace 看 syscall 调用
ipoh
2019-09-12 12:57:04 +08:00
直接看库函数的源代码
blueberryman
2019-09-15 15:01:08 +08:00
@nthhdy 行是行,但是我得写一个应用该函数的程序才能用 strace 跑,我能不能知道函数名直接就找到函数源码
yumenami
2019-09-16 17:22:41 +08:00
具体啥需求?
之前写了一个静态分析内核代码的程序,记录函数和文件的关系,然后调用的时候做匹配
但是 bad case 太多了,而且很多指针的调用也分析不到
不少情况不如直接用 strace 跑
blueberryman
2019-09-16 18:44:45 +08:00
@yumenami 前几天在跟同事讨论 pthread_condition_wait 是不是线程安全时,寻思看看其内部的实现机制,但是找不到合适的方法。我想到了一个,用 strace。但是用 strace 得先编好一个的程序,再运行它,才能查看其实现原理。如果我想直接查看某个函数的实现原理,有什么好办法吗?
nthhdy
2019-10-07 16:29:42 +08:00
@blueberryman 那不是应该看 pthread_condition_wait 的实现源码么。而且 pthread_condition_wait 这个函数是实现线程间通信、处理竞争条件的原语,不存在说这个函数本身是不是线程安全。
cmingxu
2019-11-12 18:00:52 +08:00
strace -p <pid> -e pthread_con_wait 可以么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/600273

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX