Пустая сегрегация программы
У меня есть пустая программа (module Main where main = return ()
), которая segfaults, если я включаю определенную библиотеку в зависимости от сборки в файле cabal.
Библиотека моя, и segfault - это какое-то взаимодействие драйверов шмеля с opengl и haskell (segfault возникает только в том случае, если я optirun
, который работает с другими программами, в трассировке стека я вижу только libGL.so), но это не мой вопрос.
Мой вопрос: как программа без кода segfault? Точнее, какой код моей библиотеки работает только потому, что он зависит от сборки? Как мне отладить эту бессмыслицу?
Изменить. Если я изменил порядок, в котором перечислены лишние библиотеки, при компиляции моей библиотеки проблема исчезнет. В частности, я переместил GL, GLEW перед sfml- *. Однако вопрос остается. Как я мог обнаружить эту, безразличную работу с файлами сборки?
Ответы
Ответ 1
В компиляторах Bland GCC я заметил, что > 75% ошибок сегмента в Linux - это методы, которые определяют тип возврата и не имеют одного в потоке кода.
Я бы сказал, создавая что-то хоп с неопределенностью, действительно осознавая отдачу и давая тогда неиспользованные номинальные значения... не "нули" или причудливые вещисы, просто что-то, чтобы попасть в игру.
Если по мере того как вы прогрессируете, это uncool вы можете удалить или пересмотреть их.
В вашем сообщении недостаточно подробностей, чтобы понять ваш контекст, но GCC компилирует с помощью отладочной информации, которая добавила большую помощь, если вы можете запустить pdb. после того, как он сработает там, есть команды, такие как frame и bt (backtrace), чтобы помочь вам.