Приложение работает нормально, ошибки сегментации при запуске GDB - PullRequest
0 голосов
/ 04 июня 2019

У меня есть приложение C, которое скомпилировано для работы на архитектуре Redhat Linux, которая прекрасно работает во время обычного выполнения.Однако, как только я начинаю пытаться отлаживать его с помощью GDB, он вылетает: Child terminated with signal = 0xb (SIGSEGV).

Дело в том, что здесь есть некоторые предостережения - это приложение linux, но я отлаживаю удаленно, используя gdbserver измашина для Windows.Я следовал за шагами в этой статье: https://www.linux.com/news/remote-cross-target-debugging-gdb-and-gdbserver,, которые в основном утверждают, что мне нужно скомпилировать кросс-платформенную версию GDB, которая будет работать в Windows, но может отлаживать приложения Linux.Я сделал это.Приложение запускается в Docker-контейнере на моем локальном компьютере, и в этот момент я запустил gdbserver для этого контейнера.Я создал кроссплатформенный исполняемый файл GDB и запускаю его, подключаясь к gdbserver в контейнере Docker.

Он может прикреплять точки останова, означающие, что он находит символы просто отлично, но как только приложениеначинает что-то делать, происходит сбой из-за segfault.

Дело в том, что я знаю, что это как-то связано с межплатформенностью исполняемого файла GDB.Если я запускаю обычную GDB из подсистемы Windows для Linux и подключаюсь к ней с помощью gdbserver, она работает просто отлично, но кросс-платформенная скомпилированная GDB вызывает сбои.Итак, есть ли у кого-нибудь какие-либо подсказки о том, что я мог бы сделать по этому поводу?

Весь смысл в этом состоит в том, чтобы иметь возможность отладки с использованием IDE (предпочтительно VSCode), поэтому мне нужно использовать кросс-платформенный исполняемый файл GDB, а не просто использовать подсистему Windows для Linux GDB.,

Любая помощь будет принята с благодарностью.

...