在 snap 程序中调试二进制文件

在 snap 程序中调试二进制文件

我正在尝试运行一个来自 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)

看起来很有希望,但不幸的是。

相关内容