В общей библиотеке C++, используемой приложением Android, произошла ошибка сегментации.
Я почти уверен, что это вызвано NULL-указателем (из-за гонки данных), но это может быть люблю проверять «какими-то» инструментами. Я не уверен, что у меня есть в распоряжении, поскольку среда разработки — MAC, поэтому я не могу использовать valgrind/hellgrind — по крайней мере, напрямую. Кроме того, исходный код огромен, и я не уверен, что он будет слишком медленным (или будет работать вообще).
Каковы мои варианты - могу ли я как-то отслеживать доступ к адресу памяти (чтение/запись) с помощью поток(и) только в одной или двух единицах компиляции? Есть ли простая библиотека (скажем, только заголовок или пара файлов, которые я могу добавить в проект) для этого?
Дополнительная информация: возможно, возникла проблема с JNI: Android (JAVA) использует JNI для вызова собственного C++, расположенного в общей библиотеке, которая, в свою очередь, использует JNI для вызова сетевых классов/методов Android JAVA, возвращая результаты обратно в JAVA через JNI. Так что, на мой взгляд, это совершенно ненужно, но изменить это не могу. Я предполагаю, что ошибка сегментации может быть вызвана этим «кругом зависимостей», но не знаю, как его найти.
EDIT1: это закрытый исходный код, поэтому я не могу поделиться каким-либо кодом. И это нелегко воспроизвести (мне, например, не удалось это воспроизвести)
Подробнее здесь: https://stackoverflow.com/questions/793 ... pplication