前提・実現したいこと
c言語で書いてコンパイルした実行ファイルをltrace
で実行したときに呼び出された関数名を見たいのですが、表示されません。
発生している問題・エラーメッセージ
以下のソースコード
c:hello.c
1#include <stdio.h> 2 3int main(void) { 4 printf("Hello world!\n"); 5}
をltrace ./hello
で実行しても
Hello world! +++ exited (status 0) +++
のように関数名が表示されません。
環境
- Ubuntu 20.04.2 LTS
- ltrace 0.7.3
- gcc 9.3.0
試したこと
- ltrace の再インストール
不思議ですね。当然 ldd ./hello でlibc等がリンクされているのは確認できますよね?
linux-vdso.so.1 (0x00007fff6e916000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007efe3367e000)
/lib64/ld-linux-x86-64.so.2 (0x00007efe33888000)
と表示されます
ltrace -p で何か適当なプロセスにアタッチしてみても何も出力されませんか?
ltrace -p 1 とすると
Cannot attach to pid 1: Operation not permitted
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
と出力されます
私も Ubuntu 20.04.1 LTS + ltrace 0.7.3 で確認しました。ltrace出力ないですね…。
ltrace -S でSYS_writeが呼ばれているのはわかるのですが…。
回答1件
あなたの回答
tips
プレビュー