有没有办法gnu sed详细说明运行的内容和完成的内容?
我想要一个类似“调试模式”的东西,这样我就可以看到 - 对于每一行输入 - 脚本运行前后的保持空间和模式空间的内容等。
我知道strace,它对于观察系统调用非常方便。是否有可以跟踪对外部库的调用的等效项?
例如,我正在尝试使用第三方二进制文件调试一些 SSLeay 不当行为,我无法访问其代码(并且开发人员没有响应)。我相信我已经确定了问题所在,但是如果不确切了解签名检查的数据是如何格式化以发送到 SSLeay 的,我就无法对此进行测试。
当我使用 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)
Run Code Online (Sandbox Code Playgroud)
如何让它不问,安静地执行?
我希望获得有关如何调试挂起到 RAM 问题的基于经验的建议。针对我的情况的建议(详见下文)会很好,但我也对如何调试此类问题的一般建议感兴趣。
问题:
通常,当我尝试挂起我的机器时,它会陷入“未挂起但未唤醒”状态。通常屏幕会完全黑屏,但有时会出现以下错误消息:
GLib-WARNING **: getpwuid_r(): failed due to unknown user id (0)
Run Code Online (Sandbox Code Playgroud)
此外,这种状态也将伴随着球迷的高速运转。摆脱这种状态的唯一方法是手动关闭笔记本电脑。
一些信息
$ 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
Run Code Online (Sandbox Code Playgroud)
我看过/var/log/dmesgand /var/log/pm-suspend.log,但我不知道我在找什么,也没有什么突出的。我不确定它是否相关,但我确实在以下内容中找到了很多/var/log/kern.log:
EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro,commit=600
Run Code Online (Sandbox Code Playgroud) 受到这个问题的启发,标题为:内置命令何时加载到内存中,在尝试回答这个问题时,我尝试了以下命令,但对我无法运行它感到有点惊讶:
$ strace cd $HOME
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以用来为 Bash 的内置命令运行 strace?
在 bash 中,当使用该-x选项运行时,是否可以免除单个命令的回显?
我试图使输出尽可能整洁,所以我在带有set +x. 但是,行set +x本身仍然被回显,并且不会向输出添加任何有价值的信息。
我记得在过去糟糕的.bat日子里,当运行时echo on,个别行可以通过以@. bash 中是否有任何等价物?
#!/bin/bash -x
function i_know_what_this_does() {
(
set +x
echo do stuff
)
}
echo the next-next line still echoes 'set +x', is that avoidable?
i_know_what_this_does
echo and we are back and echoing is back on
Run Code Online (Sandbox Code Playgroud)
运行上述程序时,输出为:
+ echo the next-next line still echoes 'set +x,' is that 'avoidable?'
the next-next line still echoes set +x, is that …Run Code Online (Sandbox Code Playgroud) 我知道这个问题不是很新,但似乎我无法解决我自己的问题。
ldd 生成以下输出
u123@PC-Ubuntu:~$ ldd /home/u123/Programme/TestPr/Debug/TestPr
linux-vdso.so.1 => (0x00007ffcb6d99000)
libcsfml-window.so.2.2 => not found
libcsfml-graphics.so.2.2 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcebb2ed000)
/lib64/ld-linux-x86-64.so.2 (0x0000560c48984000)
Run Code Online (Sandbox Code Playgroud)
哪个是告诉ld正确路径的正确方法?
我正在尝试调试与 vagrant 或 VirtualBox 相关的问题(请参阅taiga-vagrant 无法提供有效的针叶林环境 #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。
在 *nix 世界中,shell 脚本有没有办法获得有关哪个程序执行了它的信息?
例子:
/path/to/script1 /path/to/script_xyz
在这个想象的场景中,script_xyz会有路径信息 ( /path/to/script1)
或者
进程PID
已执行它的实体。
注意:我对不同的解决方案和方法很好奇,我不希望这实际上是可能的
当我通过strace实用程序运行命令时,我可以看到访问错误,例如
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
现在我在某处读到,上面一行中发生的事情是链接器正在寻找我正在运行的命令的优化版本,但找不到它。
我该如何解决这个问题?我需要安装什么软件包才能ld.so.nohwcap在系统上拥有该文件?即使不是出于优化目的而只是为了摆脱strace?