标签: debugging

检测应用程序执行逻辑错误的工具

我想检测应用程序执行逻辑中的错误。例如:

  • 忘记调用free()返回的地址malloc()
  • 没有关闭返回的文件句柄open()
  • 无效标志传递给open()
  • 传递给的文件句柄无效poll()
  • write()调用未打开写入的 fd
  • 将无效标志传递给open()例如 open("/etc/fstab", 4)
  • 调用close()无效的 fd
  • ...

我想还有数百个。

ftrace也许该工具可以类似于或运行strace,但包含错误调用的内核日志也足够了。

programming debugging control-flow

5
推荐指数
1
解决办法
895
查看次数

Monodevelop 不运行该项目。当我尝试运行时什么也没有发生

近一个星期以来,我一直在尝试让 Monodevelop 启动并运行,首先是在我的 redhat 上,现在是在我的 Fedora 上。

调试器不起作用,尝试调试时出现此错误: 在此处输入图片说明

我尝试重新安装 Monodevelop,但它是一样的。我看过谷歌,我唯一能找到的东西是三年前的,它说这是一个错误。

这是我尝试运行的程序:

using System;

namespace ArteriumTarreDal
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine ("Hello World!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我正在运行 Fedora 20 x86_64 并且刚刚通过此指令和存储库安装了 Monodevelop 4.0:stackoverflow

有关 apt-get 或 yum 的安装说明,请参阅:http ://software.opensuse.org/download/package?project=home:tpokorra:mono&package=monodevelop-opt

Monodevelop 4.0 也有同样的问题: 在此处输入图片说明

任何人都知道这是什么错误。以及如何修复它?

编辑:我让它在 Fedora 20 x86_64 KDE 上工作,但我仍然找不到如何在 Gnome 上修复它。

编辑:我刚刚在 Monodevelop 5.4 的 Debian 7“KDE”上遇到了完全相同的问题。

linux fedora mono debugging

4
推荐指数
2
解决办法
1万
查看次数

在运行之前回显脚本行

有没有办法运行脚本bash,使它在执行之前打印脚本的每一行?这对我的调试非常有用......

$./myscript.sh
echo "Hello"
Hello
Run Code Online (Sandbox Code Playgroud)

我将能够准确地看到我的脚本已经走了多远,以及它在做什么。

bash debugging shell-script

4
推荐指数
1
解决办法
3019
查看次数

调试内核关闭?

我在 Linux 4.2.0 上,Ubuntu 14.04 的 Ubuntu Wily HWE 内核(我正在运行)。

在 MacBook 11,4 和 11,5 型号上有一个令人讨厌的错误,其中笔记本电脑实际上永远不会关闭,它们似乎到达Power down内核消息然后只是挂起而从未关闭。此错误也可能会阻止挂起和恢复。有趣的是,它不会在reboot被调用时表现出来,只有在试图停止机器时才会表现出来。

细节不那么重要,但什么相关的是我怎么能调试这一点。有没有办法strace在内核关闭时调试或调试内核并以某种方式观察输出?我相当肯定,断电逻辑正在执行一个永远挂起的系统调用,并且由于某些奇怪的原因而没有返回。如果我能找出哪个系统调用不工作,我就可以继续找出它不工作的原因,以及具体是什么硬件导致关机失败。

是否有调试内核关闭的标准做法?我需要特殊的硬件吗?我很好地为内核编写补丁,但我什至不知道从哪里开始寻找这个问题,除非我能找到不起作用的系统调用。

linux debugging strace

4
推荐指数
1
解决办法
2652
查看次数

如何调试文件系统权限?

当我有一个以 root 身份运行的进程时,我得到权限错误,产生一个子进程作为 www-data,然后访问一个属于 root 的目录,以及一个属于 www-data 的子文件夹,它有一个指向目录的符号链接它由 www-data 组中的用户拥有,然后具有....你得到了这个想法。我怎么知道它在这个难以置信的复杂链中哪里失败了?我得到的只是权限被拒绝

如果没有陷入这种特定情况的细节,如何开始在 unix 上调试这样的问题?

我只想说

debug_permissions.sh www-data /my/long/symlink/chain```

and I want it to go through and tell me where the terminal point is (where www-data fails to have permissions)

I know there is a tool
``` namei -l /path/```
but that isn't very helpful because it doesn't let me run as another user (or at least I don't know how)

If I run 
```sudo su www-data```
I get …
Run Code Online (Sandbox Code Playgroud)

debugging permissions

4
推荐指数
1
解决办法
3983
查看次数

关闭 kASLR 以使用 qemu 和 gdb 调试 Linux 内核

我正在尝试使用 qemu 和 gdb 调试 Linux 内核。问题是 gdb 不会在断点处停止。我搜索了一下,发现关闭 kASLR 可能会有所帮助,因为 kASLR 会混淆 gdb。

-- 在客户机上安装该内核。

+- 在来宾上安装该内核,通过在内核命令行中添加“nokaslr”来关闭 KASLR。

不幸的是,我不知道将 nokaslr 添加到命令行意味着什么以及执行此操作的方法。任何想法,将不胜感激。

linux debugging ubuntu gdb qemu

4
推荐指数
1
解决办法
1万
查看次数

定义不显示在 xtrace 中的 bash 函数(set -x)

在 bash 脚本中,我有一个log()在多个地方使用的logs()函数,以及一个将大量行转移到log(). 当我运行该脚本的部分set -x,显然内的所有命令logs()log()被跟踪了。

我想定义logs()并且log()至少他们的内容,最多甚至他们的呼叫被禁止set -x输出。

bash debugging function tracing

4
推荐指数
2
解决办法
523
查看次数

是否有命令行程序来检查 IP 位置(用于 VPN)?

有大量网站会尝试从您的 IP 地址推断出您的位置。例如:https: //nordvpn.com/what-is-my-ip/

这对于调试 VPN 非常方便 - 如果我访问这些站点之一并且该位置对应于报告的服务器位置,而不是我实际所在的位置,那么我有理由确定 VPN 正在工作。

我希望能够从命令行使用这样的工具,但我无法操作复杂的网络浏览器。存在这样的工具吗?

无论如何,我使用OpenVPN运行 Gentoo ,我的提供商是Private Internet Access。但我希望有一个合理的跨平台解决方案。

debugging vpn openvpn

4
推荐指数
1
解决办法
4264
查看次数

如何使用 yocto 项目在内核中生成 /sys/kernel/debug/tracing 文件夹?

我想perf在 Renesas 目标上使用,我配置了 yocto“local.conf”,如本链接所示

#avoid stripping binaries 
INHIBIT_PACKAGE_STRIP = "1"

#add the debug information
EXTRA_IMAGE_FEATURES= "debug-tweaks tools-debug dbg-pkgs tools-profile"

#format the debug info into a readable format for PERF
PACKAGE_DEBUG_SPLIT_STYLE = 'debug-file-directory'
Run Code Online (Sandbox Code Playgroud)

perf正在工作,但我需要监视需要使用的上下文切换perf timechart以及依赖于性能事件的其他命令,但这些命令找不到此路径 "/sys/kernel/debug/tracing/events" 。

我应该怎么做才能用我的内核编译这个文件夹及其文件?

debugging embedded linux-kernel perf yocto

3
推荐指数
1
解决办法
5358
查看次数

打印运行时调用的函数的工具?

我正在 Unix/Linux 平台上寻找这样一种工具,它可以实现:

  1. 我有源文件,我自己编译了应用程序(源代码是用 C 编写的,虽然我认为这并不重要)
  2. 我想在每个函数调用被打印/记录到标准输出/文件时运行这个应用程序

例如:

#include <stdio.h>
int square(int x) { return x*x; }
int main(void) {
    square(2);
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,它会打印出来

  • 主要的
  • 正方形

我知道在gdb某种程度上可以做到这一点,或者valgrind他们都没有完全按照我的意愿去做。我只是想知道是否存在这样的工具?谢谢。

c debugging trace

3
推荐指数
2
解决办法
2661
查看次数