我有一个使用以下方法安装的包
sudo rpm -i getlisteners-debuginfo-1.0.0-113.el7.x86_64
那么我该如何运行我的包呢?
非调试版本可以在终端中使用“getlisteners”运行:
sudo rpm -i getlisteners-1.0.0-113.el7.x86_64
getlisteners
我想运行调试版本,但 getlisteners-debuginfo 不起作用。我如何知道运行刚刚安装的程序的关键字?
答案1
包可以安装在任何地方。尝试运行以下命令来查看文件安装到哪里:
sudo rpm -ql getlisteners-debuginfo
答案2
Debuginfo 包并不是你所想的那样。
你可以在这里读到它https://docs.fedoraproject.org/en-US/packaging-guidelines/Debuginfo/
debuginfo 包包含从 ELF 二进制文件(/usr/lib/debug 中的 *.debug)剥离的符号以及与它们相关的源代码(在 /usr/src/debug 中)。
该软件包getlisteners
包含您需要的内容。可执行文件列表可从以下位置获取(我使用这个列表是bash
因为我没有getlisteners
安装):
$ rpm -ql bash |grep /bin/
/usr/bin/alias
/usr/bin/bash
/usr/bin/bashbug
/usr/bin/bashbug-64
/usr/bin/bg
/usr/bin/cd
/usr/bin/command
/usr/bin/fc
/usr/bin/fg
/usr/bin/getopts
/usr/bin/hash
/usr/bin/jobs
/usr/bin/read
/usr/bin/sh
/usr/bin/type
/usr/bin/ulimit
/usr/bin/umask
/usr/bin/unalias
/usr/bin/wait
如果您的程序崩溃(coredump)并且您想要调试它,您会得到类似这样的信息:
回溯是从 '/usr/bin/epiphany' 生成的
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1241265952 (LWP 12630)]
(no debugging symbols found)
0xb7f25410 in __kernel_vsyscall ()
#0 0xb7f25410 in __kernel_vsyscall ()
#1 0xb741b45b in ?? () from /lib/libpthread.so.0
[...]
这根本没用。对你和程序开发者来说都一样。要获得有用的回溯,你必须安装相应的调试信息。使用完全相同的版本和发行版。然后回溯将如下所示:
thread 1 (LWP 186031):
#0 0x00007f03095769fe in gtk_window_set_title (window=0xdeadbeaf, title=title@entry=0x5653af368bc0 "xsettingsd killed by SIGABRT - org.freedesktop.GnomeAbrt") at ../gtk/gtkwindow.c:2415
__inst = 0xdeadbeaf
__t = <optimized out>
__r = <optimized out>
_g_boolean_var_21 = <optimized out>
__func__ = "gtk_window_set_title"
#1 0x00005653adcbe381 in update_window_title () at /usr/src/debug/libreport-2.17.9-1.fc38.x86_64/src/gui-wizard-gtk/wizard.c:333
prgname = <optimized out>
reason = <optimized out>
title = 0x5653af368bc0 "xsettingsd killed by SIGABRT - org.freedesktop.GnomeAbrt"
#2 0x00005653adcc0dc7 in update_gui_state_from_problem_data (flags=0) at /usr/src/debug/libreport-2.17.9-1.fc38.x86_64/src/gui-wizard-gtk/wizard.c:1115
reason = <optimized out>
not_reportable = <optimized out>
t = <optimized out>
stats = {filesize = 94917423599536, filecount = 2943322400}
msg = <optimized out>
reproducible = <optimized out>
count_str = <optimized out>
__func__ = <optimized out>
这很有用。通过调用与之前相同的可执行文件,您可以获得此输出。只有在分析转储的核心并为人类生成回溯时才需要调试信息。
有关检索回溯的更多信息:https://wiki.archlinux.org/title/Debugging/Getting_traces
不*-debuginfo
包含任何可执行文件。从不。它们仅包含调试符号和引用的源代码。没有其他内容。