Невозможно определить причины сигнала SIGSEGV, ошибка сегментации - PullRequest
0 голосов
/ 29 апреля 2020

Я запускаю cpp программу в Ubuntu. Я получаю сигнал SIGSEGV, Ошибка сегментации.

Я попытался использовать GDB, чтобы увидеть точную строку для ошибки сегментации. Я получил эту идею из этой темы:

Определить строку кода, которая вызывает ошибку сегментации?

GDB возвращает мне это:

Thread 1 "incremental_sat" received signal SIGSEGV, Segmentation fault.
0x00007ffff7857c50 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6

Пожалуйста, смотрите скриншот терминала ниже:

enter image description here

Я использую структуру данных, включающую все типы векторов и unordered_map для int и string.

Могу ли я узнать, какие строки кода ответственны за эту ошибку?

Я новичок в отладке в CPP. Любое предложение о направлении я могу продолжить с этой информацией?

ОБНОВЛЕНИЕ: после предложения запустить команду "bt", я добавляю вывод:

enter image description here

Я наблюдаю, что происходит ошибка сегментации сразу после вызова функции cnf_transformation_out_diff (). Так как она даже не печатает первую команду cout, написанную в функции cnf_transformation_out_diff ().

enter image description here

1 Ответ

0 голосов
/ 01 мая 2020

Наконец, я исправил ошибку с помощью моего друга Арпана.

В одном сценарии структура данных gates_out_diff оставалась пустой. Я не добавил проверку безопасности, и программа обращается к значению gates_out_diff [i] [1], поэтому это привело к ошибке сегментации.

Она работает после того, как я исправил этот случай. Это заняло у меня один день. Надеюсь, это сэкономит кому-то время.

...