Linux/C++, Как отладить приложение выпуска

Вы также можете использовать raw :

{% raw %}

...lots of liquid code goes here and it doesn't get interpreted...

{% endraw %}

9
задан Dmitriy 27 May 2009 в 17:43
поделиться

5 ответов

Недавно я читал руководства по gdb, и они рекомендуют оставить символы отладки, например, в g ++ -g .

Поскольку у вас нет доступа к производственный сервер может включать некоторые базовые функции ведения журнала, которые будут выводить данные в текстовый файл. Вы сможете примерно сузить область возникновения ошибки в зависимости от того, какие данные были выведены в ваш файл журнала.

5
ответ дан 4 December 2019 в 08:02
поделиться

Как уже упоминал Энди, оставьте символы отладки при создании релизных сборок.

Если это делает размер готового исполняемого файла неприемлемо большим, то вы можете сделать копию окончательного исполняемый файл и запустить его через полосу , чтобы удалить символы отладки. Таким образом, у вас есть два исполняемых файла, которые идентичны, за исключением того, что один имеет символы отладки, а другой нет. Поместите один без символов на рабочий сервер. В случае отказа отладки выполните отладку по копии исполняемого файла, которая все еще содержит символы отладки.

13
ответ дан 4 December 2019 в 08:02
поделиться

Вы можете (и должны) создавать исполняемые файлы выпуска с отладочной информацией. Если вы не хотите распространять исполняемые файлы, содержащие отладочную информацию, вы можете отделить отладочную информацию и установить ее позже для отладки. Это то, что мы делаем в нашем приложении.

3
ответ дан 4 December 2019 в 08:02
поделиться

Вы можете использовать gdb, чтобы получить обратную трассировку вашей программы в точке, где произошла ошибка, даже если вы не создали свое приложение с флагами отладки. Это, по крайней мере, даст вам представление о том, где происходит ошибка вашего приложения.

gdb <your_app_exe>
gdb> run
gdb> backtrace

или

gdb <your_app_exe>
gdb> core-file <generated_core_file>
5
ответ дан 4 December 2019 в 08:02
поделиться

ну, я нашел другое решение, которое я использую очень часто мы обычно получаем стек (который мы получили в данном случае).

У меня есть исполняемый файл, который мы развертываем на какой-то встроенной платформе. скажем, мой исполняемый файл - сервер. я использую addr2line -e ./server и я вставляю стопку, которую получил от клиента. он предоставит вам подробную информацию о строке, где возникла проблема.

это может вам помочь.

Спасибо

1
ответ дан 4 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: