Определить переменную, вызывающую ошибку памяти

Поэтому я несколько раз сталкивался со странной ошибкой, и я искал несколько хороших указаний, чтобы определить проблему.

В основном то, что я вижу, это ошибка сегмента. Симптомы следующие:

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

Это выглядит как segfault, и GDB говорит мне, что он находится в_list_release/_free()/free() в конце функции.

Program received signal SIGSEGV, Segmentation fault.

0xb0328af8 in _list_release () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

(gdb) bt

0 0xb0328af8 in _list_release () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

1 0xb032a464 in __free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

2 0xb0329f7d in free () from /usr/qnx650/target/qnx6/x86/lib/libc.so.3

Я не использую динамическую память (за исключением того, что может появиться в Eigen (или других библиотеках)

Я могу напечатать все локальные переменные непосредственно перед концом функции, так что это не двойное освобождение.

В прошлый раз это произошло из-за ошибки памяти, которая подходит для всех этих проблем. Раздражающе на этот раз я не могу найти проблему.

Что я хотел бы сделать, это следующее:

Это было бы очень полезно: как я могу принудительно вызвать эту ошибку в режиме отладки, тогда GDB будет гораздо более полезным.Каков наилучший способ отследить, какой маленький педераст вызывает проблему.НОТА: Я не могу использовать valgrind, он не работает в операционной системе, которую я использую (QNX)

Любая помощь будет отличной.

Ответы на вопрос(1)

Ваш ответ на вопрос