Отладка огромного проекта C ++ на linux - PullRequest
0 голосов
/ 22 февраля 2020

Я разработал проект для Ma c с использованием C ++. Работает отлично. Однако, когда я пытаюсь запустить его с Linux сервера, я получаю ошибку allo c:

terminate called after throwing an instance of 'std::bad_alloc' 
what():    std::bad_alloc 
Aborted

Я не знаю, как отладить весь проект, потому что я абсолютно не знаю о том, откуда возникла проблема. Почему он работает на моей маме c, а не на Linux? Все статьи и вопросы по этому вопросу касаются только одной файловой программы, но не 40+ файлов проекта.

Есть ли способ получить файл или строку, которая вызывает ошибку allo c?

1 Ответ

0 голосов
/ 22 февраля 2020

Создайте свою программу с опцией компилятора -g, чтобы получить значимые следы стека.

Затем запустите программу в отладчике, например, gdb:

gdb --args [executable] [arguments...]

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

std::bad_alloc означает, что ваша программа не смогла выделите больше памяти, возможно, потому, что ОС либо не хватило памяти, либо вы достигли явного ограничения памяти, установленного системой.

...