【问题标题】:Segmentation fault in qemu arm ubuntu disk image?qemu arm ubuntu磁盘映像中的分段错误?
【发布时间】:2014-01-26 14:02:56
【问题描述】:

我在 Qemu 中为 ARM 架构使用 Ubuntu 磁盘映像。我编译了几个多线程 C 语言程序,并且很少进行测试来执行它们。但是对于其中一个程序,它在大多数情况下都因分段错误错误而失败。我试图通过放置 printf 语句来追踪有问题的区域。据我观察,它在不同的地方崩溃(在函数内部的某个地方被传递给线程的函数调用),这使得很难确定哪里出了问题以及问题出在哪里?

同样的程序运行良好,无论我执行多少次,使用我的 Ubuntu x86 硬件机器。

有人遇到过类似的问题吗?出现此问题是因为 Qemu 或磁盘映像还是两者兼而有之?

有什么帮助吗?

【问题讨论】:

  • 在进行交叉调试之前,可能值得在本机版本上使用Valgrind 来追踪不良行为(即使它设法不崩溃)。
  • @Notlikethat 好吧,它产生了一个 98kB 大小的文件,现在知道了,要跟踪什么?为我的无知道歉...

标签: c ubuntu segmentation-fault arm qemu


【解决方案1】:

仅仅因为一个程序在一个环境中运行并不能保证它没有错误。打印语句是发现问题的一种方法,但有些偶然。更好的是使用真正的调试器。您可能需要 gdb 服务器和网络端口来调试在 qemu 中运行的程序,但这可以让您设置断点、单步执行、检查变量以及获取崩溃的堆栈跟踪。

【讨论】:

  • 我已经安装了这个磁盘映像,并且我安装了sudo chroot .。没有 gdb insdie 映像。您能否建议如何在此处获取 gdb 或者可以做些什么?
  • 交叉编译 gdb 和 gdbserver。 NFS 挂载和复制。
  • 其实只需要交叉编译gdbserver。使用在主机上运行的 gdb 连接到它。
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 2015-02-11
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
相关资源
最近更新 更多