Questions tagged «ltrace»

2
内核中哪个文件指定了fork(),vfork()…以使用sys_clone()系统调用
当使用ltrace跟踪系统调用时,我可以看到fork()使用sys_clone()而不是sys_fork()。但是我找不到定义它的linux源。 我的程序是 #include<stdio.h> main() { int pid,i=0,j=0; pid=fork(); if(pid==0) printf("\nI am child\n"); else printf("\nI am parent\n"); } 和ltrace输出是 SYS_brk(NULL) = 0x019d0000 SYS_access("/etc/ld.so.nohwcap", 00) = -2 SYS_mmap(0, 8192, 3, 34, 0xffffffff) = 0x7fe3cf84f000 SYS_access("/etc/ld.so.preload", 04) = -2 SYS_open("/etc/ld.so.cache", 0, 01) = 3 SYS_fstat(3, 0x7fff47007890) = 0 SYS_mmap(0, 103967, 1, 2, 3) …

2
如何确定流程正在执行哪些指令?
我知道strace和ltrace,但这仅告诉我进程正在执行的系统调用和库调用。我想确切地知道流程正在执行什么指令。可能是汇编,也可能是C与汇编之间的某种中间立场。假定二进制文件未使用调试符号进行编译,因此更可能选择第一个选项。 用例:进程似乎已挂起,strace或ltrace没有输出。确定过程是否在做“某事”。我意识到这可能很难确定,因为我想这类似于解决暂停问题。但是,有可能收集有用的数据。 第二个用例:好奇心。将整个汇编指令列表转储到文本列表中会很有趣。 我的猜测是我可以使用gdb来执行此操作,但不确定如何执行此操作,因为这与调试我编写的程序有关,而与使用gdb来检查正在运行的进程的运行状况有关。 操作系统是CentOS 6。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.