Questions tagged «debugging»

是发现并减少计算机程序中的错误或缺陷数量的过程,从而使其表现出预期的效果

1
调试脚本,-x设置-euxo pipefail有什么区别?
我知道的调试脚本的主要方法是添加-x到shabang(#!/bin/bash -x)中。 我最近遇到了一种新方法,set -euxo pipefail在shabang的下面添加了一个新方法,如下所示: #!/bin/bash set -euxo pipefail 两种调试方式的主要区别是什么?有没有时间您会优先选择另一个? 作为一个新生,在这里阅读之后,我无法得出这样的结论。

2
gdb可以调试suid根程序吗?
我编写了一个调用setuid(0)和的程序execve("/bin/bash",NULL,NULL)。 然后我做了 chown root:root a.out && chmod +s a.out 当我执行时,./a.out我得到一个root shell。但是,当我执行gdb a.out此操作时,它将以普通用户身份启动该过程,并启动一个用户外壳程序。 所以...我可以调试setuid根程序吗?
16 debugging  setuid  gdb 

4
如何在Linux上调试Suspend-to-RAM问题?
我希望获得有关如何调试暂挂到RAM问题的基于经验的建议。针对我的情况的建议(在下面进行详细介绍)会很不错,但是我也对如何调试此类问题的一般建议感兴趣。 问题: 通常,当我尝试挂起计算机时,它陷入“未挂起但未唤醒”状态。通常,屏幕会是全黑的,但有时屏幕上会显示以下错误消息: GLib-WARNING **: getpwuid_r(): failed due to unknown user id (0) 同样,这种状态也将伴随着球迷大步前进。使它脱离此状态的唯一方法是手动关闭笔记本电脑的电源。 一些信息 $ uname -a Linux baltar 2.6.35-22-generic #34-Ubuntu SMP Sun Oct 10 09:26:05 UTC 2010 x86_64 GNU/Linux $ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 10.10 Release: 10.10 Codename: maverick 我查看了/var/log/dmesg和/var/log/pm-suspend.log,但是我不知道自己在寻找什么,所以什么都没有。我不确定是否相关,但是我确实在中找到了很多以下内容/var/log/kern.log: EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro,commit=600

2
跟踪库调用
我知道strace,它非常方便观看系统调用。是否存在可以跟踪对外部库的调用的等效项? 例如,我正在尝试使用第三方二进制文件调试某些SSLeay异常行为,而我无法访问该代码(谁的开发人员没有响应)。我相信我已经解决了这个问题,但是如果没有确切地查看经过签名检查的数据如何格式化以发送到SSLeay,就无法进行测试。

1
如何使gdb不问我“ y或n”?
当我使用GDB命令add-symbol-file加载符号时,GDB总是问我“ y或n”,如下所示: gdb> add-symbol-file mydrv.ko 0xa0070000 add symbol table from file "mydrv.ko" at .text_addr = 0xa0070000 (y or n) 如何使其不问而悄悄执行?
14 debugging  gdb 

2
Shell脚本是否有办法知道哪个程序执行了它?
在* nix世界中,shell脚本是否可以获取有关哪个程序已执行该程序的信息? 例: /path/to/script1 /path/to/script_xyz 在这种假想的情况下,script_xyz将具有路径信息(/path/to/script1) 要么 过程PID 执行它的实体。 注意:我对不同的解决方案和方法感到好奇,我不希望这真的可行

2
观察内核空间中的硬盘写入(带有驱动程序/模块)
如果这篇文章有点密集/混乱,请提前致歉,但是我很难将其表述得更好...基本上,我想研究硬盘写操作时发生的情况,并且我想知道: 我的理解是否正确-如果不正确,我在哪里出问题? 是否有更好的工具来“捕获”磁盘写入期间PC上发生的所有方面的日志数据? 更详细地讲-首先,我使用的操作系统是: $ uname -a Linux mypc 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 18:00:43 UTC 2012 i686 i686 i386 GNU/Linux 因此,我有以下简单的用户空间C程序(例如,跳过了对操作失败的常规检查)wtest.c: #include <stdio.h> #include <fcntl.h> // O_CREAT, O_WRONLY, S_IRUSR int main(void) { char filename[] = "/tmp/wtest.txt"; char buffer[] = "abcd"; int fd; mode_t perms = S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH; fd = …

2
如何从Unix域套接字被动捕获(AF_UNIX套接字监视)?
可以使用tcpdump/ 捕获TCP / IP和UDP,dumpcap并生成一个pcap / pcapng文件,该文件可以提供给Wireshark进行进一步分析。命名的Unix域套接字是否存在类似的工具?(不过,适用于抽象套接字的通用解决方案也不错。) strace仅凭现状是不够的,要过滤Unix域套接字I / O并不容易。一个使用代理socat或类似的也不适宜为目标,是对现有打开的程序被动分析。 如何获得可在Wireshark中用于分析的数据包捕获?示例协议应用程序是X11(Xorg,我当前的应用程序)和cURL / PHP(HTTP)。我CONFIG_UNIX_DIAG在Linux内核中看到了一个选项,这有什么用吗?

3
是否可以将内置命令跟踪到Bash?
受题为:内置命令何时加载到内存的启发,在尝试回答此问题时,我尝试了以下命令,但由于无法运行而感到有些惊讶: $ strace cd $HOME 有什么我可以利用的方法来为sash的内置命令运行strace吗?
13 bash  debugging  strace 

2
在Linux上等效于“ truss -T”和“ truss -U”?
是否有与Solaris实用程序的-Tand -U选项truss在Linux上等效的功能。 这些用于指定系统调用(-T)或库函数(-U),当被跟踪的应用程序调用该函数时,该函数将导致其停止。 或者,换句话说,我希望由跟踪的应用程序启动的任何进程在进行给定的系统调用或给定的共享库函数调用时立即停止(好像被SIGSTOP杀死)。 strace并且ltrace在Linux上提供了Solaris的许多功能集truss,但他们似乎并没有这么做。 例如: truss -f -T open cmd 会是这样strace -f cmd,只是如果在执行过程中cmd或任何其后代做任何open系统调用时,它会立即停止(我可以在我方便以后恢复它) 在某些情况下,我可以使用gdb的catch syscall,但我一直在寻找一种解决方案,可以方便地遵循forks并继续对所有分叉的过程进行处理,即使在execves 之后也继续进行处理。 我似乎想起了一些提供相同功能的实用程序,甚至是在远程发生某些系统调用之间,甚至一步一步地向单步应用程序(或同一实用程序的选项),但我的记忆力却使我失望了,我什至无法确定在Linux上。

2
转储进程核心而不终止进程
有没有一种方法可以在不真正杀死进程的情况下获得进程的核心转储(或类似的东西)?我有一个在嵌入式系统上运行的多线程python进程。而且我希望能够在正常情况下(例如,需要运行其他进程)获取该进程的快照,但是如果没有python进程,我没有足够的内存来连接gdb(或在gdb下运行)是唯一的跑步。 我希望这个问题有意义。

3
我们如何跟踪Linux中程序崩溃的问题?
如果应用程序在Windows中崩溃,我们可以在“管理”工具中检查“事件查看器”以查看崩溃的原因。有时它具有有用的信息,而其他却没有,但这只是一个开始。 在Linux中,如果某个应用程序(任何应用程序)崩溃,那么如何开始跟踪发生了什么? 是否有一些中央日志或类似的东西?

1
ACPI BIOS错误/ AE_NOT_FOUND
每当我重新启动桌面时,我都会收到这些错误消息(还有一些其他消息,我不知道它在关闭时如何保留,但到目前为止与该问题无关): [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) …

4
如何判断当前正在执行的bash脚本是否已通过-x调用进行调试?
我有一个脚本launch.sh,该脚本可以另一个用户身份执行,以便使用正确的所有者创建文件。我想将-x传递给此调用(如果它最初传递给脚本) if [ `whoami` == "deployuser" ]; then ... bunch of commands that need files to be created as deployuser else echo "Respawning myself as the deployment user... #Inception" echo "Called with: <$BASH_ARGV>, <$BASH_EXECUTION_STRING>, <$->" sudo -u deployuser -H bash $0 "$@" # How to pass -x here if it …
11 bash  debugging 

2
流浪者的日志文件在哪里?
我正在尝试调试与vagrant或VirtualBox相关的问题(请参阅taiga-vagrant无法提供工作的taiga环境#21)。 该命令将VAGRANT_LOG=debug vagrant up --debug打印出很多可能有用的信息。但是,此日志存储在哪里? 编辑: VAGRANT_LOG=debug vagrant up实际上与相同vagrant up --debug。我使用以下工具:Funtoo-Linux,Vagrant 1.4.3和VirtualBox 4.3.32。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.