Ответ 1
В теории вы должны иметь возможность отлаживать GCC-построенную программу с lldb и LLVM-построенной программой с gdb. В обоих случаях вы должны скомпилировать с -g
.
Это связано с тем, что оба компилятора генерируют объектные файлы в том же формате (например, в Linux, оба будут генерировать файлы ELF с DWARF debug info), и оба отладчика знают, как разбирать этот формат.
На практике оба компилятора вводят некоторые данные в информацию об отладке, которую только их соответствующий отладчик знает, как потреблять. Однако:
- Данные, сгенерированные LLVM, не должны каким-либо образом препятствовать gdb.
- Данные, генерируемые GCC, не должны препятствовать lldb, но если вы действительно можете попросить gcc не добавлять нестандартные данные. Например, в Linux использование
-gdwarf-2
over-g
должно только генерировать стандартно-совместимый DWARF.
Обратите внимание, что вы также можете отлаживать программы без отладочной информации (не скомпилированные с помощью -g
), но вы будете ограничены низкоуровневой информацией в отладчике - ассемблером, памятью и регистрами и не сможете см. конструкции высокого уровня, такие как номера строк, имена функций, сопоставление имен переменных и их содержимого и т.д.