问题标签 [kgdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 使用串口调试 linux 内核模块
我正在尝试设置简单的内核调试,我在 VM(ESXi)上有一个 3.2.6 内核,我声明了一个串行端口(我设法连接到串行)
调试器:
被调试者:
我按照本教程介绍了如何设置 gdb,当我开始调试时,我似乎收到了回复(串行端口似乎很好),但是 gdb 越来越垃圾并且无法调试任何东西,
我在 2k10 的 lkml 上遇到了一个线程,它在 2.6.35 内核上表示了类似的问题,但是已经提交了一个补丁(我猜它已经成为主流)并且我正在尝试调试 3.2.6
这是我从 gdb 得到的:
这是来自 vm 的输出:
谁能提示我如何解决它?
(如果任何模组可以编辑我的消息并将所有图像转换为真实图像和链接到真实链接,那也很棒,系统不允许这样做,我必须在发布之前编辑我的帖子 4-5 次:/)
linux - 无法调试系统调用
我正在尝试使用 KVM 和 gdb 调试内核,它工作正常。
但是系统调用上的断点似乎不起作用。
在 gdb 中我设置了一个断点:
然后我输入c
继续,
但是当我uname -a
在调试系统中运行时,它并没有中断。
从 strace 的输出来看,该uname
命令确实进行了 uname 系统调用,那么为什么它没有停止呢?
debugging - powerpc 架构需要 KDB 补丁
我正在使用带有 powerPC 的 Linux 内核版本 2.6.34.6。我知道 KDB 与 Kernel mainline 2.6.35 合并。因此我需要在我的内核中应用 KDB 补丁,
但我在以下地方找不到任何适用于 powerPC 的补丁
ftp://oss.sgi.com/www/projects/kdb/download/
你能帮我弄个powerpc的补丁吗?
c - 无法在 kgdb 设置中的某些函数上设置断点
我使用两个虚拟机设置了 kgdb,它们都具有 CentOs 6.4(实际上 kgdb 主机是目标的克隆)。我成功地连接到远程目标并开始调试。我想调试 RAID 驱动程序,特别是 raid456.ko。我的问题是在 gdb 下使用 add-symbol-file 命令加载此 raid456.ko 的符号后,我能够在几个函数上设置断点,但我无法在几个函数上设置断点。例如,我可以在 ops_run_biofill 函数上设置断点,但不能在 ops_run_biodrain 函数上设置断点。两者都是静态函数和 raid5.c 文件的一部分。如果我尝试在 ops_run_biodrain 上设置断点,则会显示:
(gdb) b ops_run_biodrain
未定义函数“ops_run_biodrain”。在未来的共享库加载时使断点挂起?(y 或 [n])
为什么很少有功能可以调试,而其他一些则不能?
[编辑]--------------------- 我进一步调查了这个问题,我发现使用 nm 实用程序我们可以找到某些特定符号部分的名称和虚拟地址目标文件。我在 raid456.ko 上尝试了 nm,发现 ops_run_biofill 函数在 nm 命令的输出中,但 ops_run_biodrain 不在输出中。这是否意味着 ops_run_biodrain 不在 raid456.ko 中?如果是,那么为什么它不是 raid456.ko 的一部分?ops_run_biodrain 不受任何宏检查。
c - 使用 gdb 调试内核时无法查看源代码
我在两个 VM 之间使用串行端口设置了 kgdb(目标是主机的克隆。)并且我能够在其中设置断点。但是当断点被击中时,我尝试在 gdb 中使用 list 命令查看源代码,但它显示的是 kgdb.c 的源代码,而不是我的断点被击中的文件,如下所示:
断点命中时如何查看适当的源?
[编辑] 当我尝试列出已经是 vmlinux(静态编译内核)一部分的函数的来源时,它会显示它的来源。但是当我尝试调试动态加载的模块并使用 add-symbol-file 添加它的符号时,它不会显示源代码。这意味着,我的模块有问题。谁能帮我这个模块有什么问题?
c - GDB - 将串行输出(来自 dmesg)重定向到文件,但不是 gdb 输出/TUI?
我正在使用 kgdb 通过串行电缆调试某些东西,所以我在 gdb 中“设置远程 /dev/ttyS1”,它通过 gdb 为我提供远程机器的输出。
有没有办法将此输出重定向到文件而不重定向 gdb 的其余输出?它也不会让我启用 TUI。我在用着:
谢谢!
序列号是从我的目标机器输入的,还是从 gdb 使用标准输出的输出?什么使用标准输入,什么使用标准输出,什么使用标准错误?
linux - 如何通过 GDB + KGDB 从 LOCAL 机器上破解 REMOTE 调试的 Linux 内核?
我正在通过 GDB + KGDB + 两个虚拟机 + 串口调试 Linux 内核。
如果我们使用 GDB 来调试一个正常的程序,我们可以直接按 Ctrl+C 来中断程序的执行。
但是,当我将 GDB 连接到远程 KGDB 存根时,无论如何我都无法破坏远程计算机,除非我在远程计算机上使用以下命令:
echo g > /proc/sysrq-trigger
如何从本地机器上破解远程调试的 Linux 内核?
gdb - 通过终端服务器连接 gdb 客户端并进行身份验证
我正在尝试进行远程调试。我的 GDB 服务器按预期运行(在我的情况下,它是内核端的 KGDB)。KGDB 挂机良好,以便 GDB 客户端可以连接。
我需要使用终端服务器和端口号连接 GDB 客户端,因为在需要用户名和密码才能进入的实际情况下,我的设备是通过终端服务器连接的。
因此,仅执行目标远程终端服务器:端口无助于连接,因为没有提供用户名和密码的方法。
如果我直接用串口连接我的设备并尝试使用目标远程/dev/ttyS0,它会按预期工作。
但我想调试更多通过终端服务器连接的设备。你能帮我解决这个问题吗?我也尝试了命令 target remote | expect_script (它将尝试使用用户名和密码登录),我无法成功。建议我这样做的正确方法。
debugging - 使用 kgdboc 的 KGDB 错误代码“22”
我目前正在尝试使用 PowerPC 500v2 处理器调试电路板。当我尝试使用 gdb 连接到板时,板已经为我准备好了,它给了我状态
使用远程调试 1 组:
我在单个串行端口上运行旧内核(2.6.27)以进行显示和调试。我主要使用 echo ttySX > /sys/module/kgdboc/parmeters/kgdboc 和 echo g > /proc/sysrq-trigger 进行设置,但我也在启动时尝试了内核参数,但似乎没有什么不同。出于某种原因,当我退出 gdb 时,它似乎可以将退出数据很好地发送到板子(板子停止暂停),但其他命令似乎都不起作用。
gdb - GDB 中的 solib-absolute-prefix 与 solib-search-path
我阅读了两者的描述,但我还不明白其中的区别。谁能帮我理解这些差异?
.
谢谢。