【问题标题】:Is it possible to have a segmentation fault due to an x-server?是否可能由于 x 服务器而出现分段错误?
【发布时间】:2019-06-01 22:34:50
【问题描述】:

对于一个学校项目,我正在构建一个 GUI,但我想在家里做这个项目,因为我只有一台 Windows 计算机,所以我安装了一个 x-server(用于 Linux 的 Windows 子系统) : "VcXsrv Windows X 服务器"。

对于我的一些测试程序,它运行良好,但对于其中一个,我遇到了分段错误(核心转储)。

所以我尝试使用 gdb 进行调试(它不需要 x-server 工作),但是......它工作得很好......

所以这是我的问题:是否有可能由于 x-server 导致分段错误?

【问题讨论】:

  • Linux 可以免费安装。为什么不去那里试试?
  • 这不是闻所未闻,但很少见,取决于您使用的 GUI 框架。如果您正在做一些非常奇怪的事情,例如,直接与 GUI 库旁边的 X 服务器对话,这当然是可能的。否则很可能是库中的错误。
  • @VaughanHilts 我的电脑里没有那么多地方,我需要 Windows 来编辑视频
  • @DanielKamilKozar 我正在使用 SDL 库
  • 正如消息所说,您应该有核心转储(通常命名为core.some_numeric_pid)。您可以使用 gdb /path/to/your_program /path/to/core_dump 将其加载到 gdb 以检查失败的位置。

标签: c windows segmentation-fault sdl xserver


【解决方案1】:

如果您的程序因分段错误而失败,那么根本原因几乎可以肯定是在您的程序中,而不是环境。但是,在一个环境中表现为段错误的程序的未定义行为可能在另一个环境或具有不同配置的情况下表现不同。从这个意义上说,您可以说 X 服务器可能“导致”段错误,但是以这种方式对其进行表征绝不会让您的程序摆脱困境。

当程序在调试器下运行时与直接运行时不同,UB 的表现并不罕见。这伴随着“未定义”。如果您看到段错误,那么求助于调试器并非不合理,但更可能用于表征问题的工具是内存使用分析器,例如 Valgrind。

【讨论】:

  • 我用过 Valgrind,但它什么也没说。我今天在我的学校直接在 linux 操作系统上尝试过,它没有显示任何 seg 错误。我必须承认我很困惑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 2018-11-12
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多