有没有可以在 Linux 机器上调试路由表的工具?
我的意思是我可以通过输入一个 ip 地址来使用它,它会考虑现有的路由表并从表中输出匹配项,所以我可以知道数据包会去哪里?
我有一个 bash 函数(或别名),例如function install() {sudo apt-get install $@}. 运行命令时install dicelab,我期望实际运行的是sudo apt-get install dicelab. 我在哪里可以看到 shell 实际运行了什么?我想确保我更复杂的别名按预期工作。
我知道调试脚本的主要方法是添加-x到 shabang ( #!/bin/bash -x)。
我最近遇到了一种新方法,set -euxo pipefail在 shabang 下添加,如下所示:
#!/bin/bash
set -euxo pipefail
Run Code Online (Sandbox Code Playgroud)
两种调试方式的主要区别是什么?有时您会更喜欢一个吗?
作为一个大一新生,读到这里,我无法得出这样的结论。
我一直在像 uCOS、ThreadX 这样的嵌入式操作系统中工作。虽然我已经在 Linux 中编写了应用程序,但现在我打算开始学习 Linux 内核。我有几个关于环境的问题。
哪个是最好的发行版,哪个具有易于使用的内核开发工具?(到目前为止,我已经使用过 RHEL 和 Fedora。虽然我对这些很满意,但看起来 Ubuntu 也有内置脚本可以轻松编译内核,例如make_kpkg等)
你能描述内核调试的最佳设置吗?在调试其他嵌入式操作系统时,我使用了串口转储进度、JTAG 等。Linux 内核开发人员使用哪种设置?(我的带串口的测试台 PC 是否足以满足我的需要?如果是,如何配置内核以转储到串口?)我打算将内核消息重定向到串行控制台,该控制台将在我的笔记本电脑中读取。
什么工具最适合调试和跟踪内核代码?如前所述,串行控制台是唯一的方法吗?或者是否存在用于 PC 的任何 IDE/JTAG 类型的接口?
我有两个正在运行的进程实例。其中之一是“吓坏了!” 和打印错误不停地到标准输出。
我想终止损坏的进程,但我必须确保我不会终止错误的进程。它们几乎是同时启动的,使用top我可以看到它们使用的内存和 CPU 量大致相同。我似乎找不到任何表明哪个进程表现不佳的内容。
最安全的做法是找出哪个进程/pid 正在写入 STDOUT。
有没有办法做到这一点?
我正在使用Scientific Linux (SL)。我正在尝试编译一个使用一堆 C++ (.cpp) 文件的项目。
在目录中user/project/Build,我输入make以编译和链接所有 .cpp 文件。然后我必须去user/run/然后输入./run.sh values.txt
要使用 GDB 进行调试,我必须转到user/run然后键入gdb ../project/Build/bin/Project并运行,我输入run -Project INPUT/inputfile.txt. 但是,我正在尝试使用p variablename.
但是,我收到了消息s1 = <value optimized out>。我在网上做了一些研究,似乎我需要在没有优化的情况下编译-O0来解决这个问题。但是我在哪里输入呢?在CMakeLists?如果是这样,哪些 CMakeLists ?在project/Build或project/src/project?
可以使用tcpdump/进行 TCP/IP 和 UDP 捕获,dumpcap并生成一个 pcap/pcapng 文件,该文件可以提供给 Wireshark 进行进一步分析。是否存在用于命名 Unix 域套接字的类似工具?(不过,适用于抽象套接字的通用解决方案也很好。)
strace按原样是不够的,过滤 Unix 域套接字 I/O 并不简单。使用socat或类似的代理也不适合,因为目标是对现有开放程序的被动分析。
如何获取可在 Wireshark 中用于分析的数据包捕获?示例协议应用程序是 X11(Xorg,我当前的应用程序)和 cURL/PHP (HTTP)。我CONFIG_UNIX_DIAG在 Linux 内核中看到了一个选项,这个有什么用吗?
每次我重新启动桌面时都会收到这些错误消息(还有一些我不知道在关闭时如何保留,但到目前为止这些与这个问题无关):
[gorre@uplink ~]$ journalctl -p err..alert
...
-- Reboot --
May 11 21:47:03 uplink kernel: ACPI BIOS Error (bug): Failure looking up [\_SB.PCI0.RP04.PXSX._SB.PCI0.RP05.PXSX], AE_NOT_FOUND (20180105/dswload2-194)
May 11 21:47:03 uplink kernel: ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20180105/psobject-252)
May 11 21:47:03 uplink kernel: ACPI Error: Method parse/execution failed \_SB.PCI0.RP04.PXSX, AE_NOT_FOUND (20180105/psparse-550)
May 11 21:47:03 uplink kernel: ACPI BIOS Error (bug): Failure looking up [\_SB.PCI0.RP08.PXSX._SB.PCI0.RP09.PXSX], AE_NOT_FOUND (20180105/dswload2-194)
May 11 21:47:03 uplink kernel: ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20180105/psobject-252)
May 11 21:47:03 …Run Code Online (Sandbox Code Playgroud) 我写了一个程序,调用setuid(0)和execve("/bin/bash",NULL,NULL).
然后我做了 chown root:root a.out && chmod +s a.out
当我执行时,./a.out我得到一个 root shell。但是,当我这样做时,gdb a.out它会以普通用户身份启动进程,并启动一个用户 shell。
那么...我可以调试 setuid root 程序吗?
我曾经在这台 HP Compaq 610 上安装了 Fedora 14,并且挂起功能运行良好。现在我已经安装了 Scientific Linux 6.1 暂停不再工作了。我如何调试/修复它?
debugging ×10
linux ×3
gdb ×2
acpi ×1
arch-linux ×1
bash ×1
cmake ×1
development ×1
ip ×1
kernel ×1
open-files ×1
optimization ×1
pcap ×1
process ×1
routing ×1
setuid ×1
shell ×1
shell-script ×1
stdout ×1
suspend ×1
trace ×1
unix-sockets ×1