我正在尝试运行一个来自 snap 的二进制文件strace
来调试它的工作原理。
因为可执行文件是通过/snap/bin/prog
符号链接访问的,所以/usr/bin/snap
我只能看到 snap 的系统调用,而看不到程序的。
我该如何运行该二进制文件?
我尝试使用 chroot,但它告诉我二进制文件没有退出:
$ sudo chroot /snap/prog/current /usr/bin/prog
chroot: failed to run command ‘/usr/bin/prog’: No such file or directory
即使有一个二进制文件/snap/prog/current/usr/bin/prog
它也可以运行。
我可以更直接地访问 snap 的执行情况吗?
注意:如果我想通过 gdb 而不是 strace 来运行它,也会出现同样的问题。
更新
当我发现时,我以为我有一个好的开始--devmode
,/var/lib/snapd/hostfs
但是运行主机箱只会导致分段冲突。
$ sudo snap run --shell PROGNAME
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/var/lib/snapd/hostfs/usr/lib/x86_64-linux-gnu/
# /var/lib/snapd/hostfs/usr/bin/strace
Segmentation fault (core dumped)
看起来很有希望,但不幸的是。