簡體   English   中英

ltrace 的替代方案,它適用於與 `-z now` 鏈接的二進制文件?

[英]Alternative to ltrace that works on binaries linked with `-z now`?

ltrace不適用於與-z now選項鏈接的二進制文件,這是我的 Ubuntu 19.10 系統上的默認選項。 它僅適用於與-z lazy鏈接的二進制文件。

是否有任何替代ltrace的方法可以完成相同的工作,但now也適用於二進制文件?

您可以使用Namhyung Kim 編寫的 uftrace 實用程序 在 Ubuntu 中以 package的形式提供,盡管我手動從 master 分支構建代碼以確保我使用最新的 vanilla 版本。 示例main.c

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  puts("Hello World");

  return EXIT_SUCCESS;
}

-z now構建:

gcc -O2 main.c -z now -o main

ltrace不起作用:

$ ltrace ./main
Hello World
+++ exited (status 0) +++

但是uftrace確實:

$ LD_LIBRARY_PATH=~/uftrace/libmcount ~/uftrace/uftrace -a --force ./main
Hello World
# DURATION     TID     FUNCTION
  58.231 us [ 16283] | puts("Hello World") = 12;

請參閱 Github 上項目站點上的此線程:即使沒有 PLT #592,也可以跟蹤庫調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM