Информация об отладке, сгенерированная с помощью -g
для моего проекта, значительно увеличивает размер двоичного файла и увеличивает время компиляции. Я хотел бы использовать компактный -gline-tables-only
, но не уверен, что я потеряю. Например, будут ли по-прежнему работать точки прерывания строки? А как насчет p var_name
в LLDB? Я использую clang
и swiftc
, которые зависят от LLVM.
-gline-tables-only действительно записывает только адрес->номер строки отладочной информации. Таким образом, настройка разрыва по файлу и строке в основном будет работать (некоторая информация о встраивании не входит в официальную «таблицу строк», и она будет отсутствовать), и вы увидите информацию о строке в обратных трассировках.
Однако ему не хватает всей информации об области/переменной/типе. Таким образом, потребитель не будет знать, какие переменные есть в текущей области или вообще где-либо в вашей программе (поэтому v
и представление Locals вашей IDE не будут работать). И даже если бы он знал о переменной, он не смог бы ее напечатать, потому что lldb также не знал бы ее тип. Таким образом, вы также не можете использовать expr
для приведения и печати необработанных адресов.
-gline-tables-only полезен для долгосрочного хранения отладочной информации, когда все, что вам действительно нужно, это получить информацию о номере строки из отчетов о сбоях и т.п. Это бесполезно для фактической отладки.