я только получить выход из Valgrind, что я не совсем понимаю:Выход Valgrind с адресами и вопросительными знаками?
==20290== Invalid read of size 1
==20290== at 0x8C1D678: ???
==20290== by 0x5D74C47: ???
==20290== Address 0xee818c7d is not stack'd, malloc'd or (recently) free'd
==20290==
==20290==
==20290== Process terminating with default action of signal 11 (SIGSEGV)
==20290== Access not within mapped region at address 0xEE818C7D
==20290== at 0x8C1D678: ???
==20290== by 0x5D74C47: ???
==20290== If you believe this happened as a result of a stack
==20290== overflow in your program's main thread (unlikely but
==20290== possible), you can try to increase the size of the
==20290== main thread stack using the --main-stacksize= flag.
==20290== The main thread stack size used in this run was 8388608.
==20290==
В частности, я смущен этими знаками вопроса. Обычно то, что вы получаете на этом месте, - это местоположение ошибок, обнаруженных valgrind. Я использовал valgrind раньше, и весь вывод был как описано в manual. Я использовал эту команду valgrind:
valgrind --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=20 --track-origins=yes
Сама программа кричит на ошибку сегментации. Хотя valgrind не говорит мне о месте утечки памяти на этот раз, от отладки я определил место, где возникает ошибка сегментации. К сожалению, он находится в функции решения ODE из библиотеки Intel ODE solver (dodesol), и у меня нет доступа к ней. Я тщательно проверил все параметры, которые я передаю этой функции много раз, и они кажутся нормально (по крайней мере, соответствуют тем, которые были в руководстве, и примерами, которые я имел раньше).
Компиляция с '-g3' или' -g2' для обеспечения присутствия символов. Компиляция с '-O1' или' -O0' для обеспечения точных символов. Также см. [Подготовка вашей программы] (http://valgrind.org/docs/manual/quick-start.html#quick-start.prepare) в кратком руководстве пользователя Valgrind. – jww