我有一个空程序(module Main where main = return ()
),如果我在cabal文件中包含build-depends中的特定库,则会出现段错误。
库是我自己的,而segfault是大黄蜂驱动程序与opengl和haskell的某种交互(如果我optirun
,则会发生段错误 ,与其他程序一起使用,在堆栈跟踪中我只看到libGL.so),但这不是我的问题。
我的问题是,一个程序如何没有代码段错误?更准确地说,我的库的哪些代码只是因为它在构建中依赖而运行?我该如何调试这个废话?
编辑。如果我更改了列出额外库的顺序,那么在编译库时,问题就会消失。具体来说,我在sfml- *之前移动了GL,GLEW。但问题仍然存在。 我怎么能发现这个,除了漫无目的地摆弄构建文件?
答案 0 :(得分:1)
在Bland GCC编译中我注意到了> linux下75%的Segment故障是定义返回类型的方法,并且在代码流中没有一个。
我会说当一些东西在不确定的情况下跳跃存在时,要真正意识到回报并给出未使用的名义价值......而不是“无效”或花哨的填充物,只是游戏中的东西。
如果您在进步时这是不冷却的,您可以删除或修改它们。
您的消息中没有足够的细节来理解您的上下文,但是如果您可以运行pdb,则GCC编译调试信息会大大增加帮助。在它崩溃之后会出现像frame和bt(backtrace)这样的命令来帮助你。