Я разрабатываю проект на базе Android, для которого требуются некоторые компоненты для запуска через NDK, потому что я использую код, уже написанный на C. У меня очень странная проблема, когда программа вызывает сбой при вызове определенной функции:
numin_read(ns,values+data_spec->N_inputs*i+j0);
ns - указатель на структуру, а значения - указатель на двойной массив, остальное - просто целочисленное смещение, все из которых действительны (ns уже использовалсявремя, когда эта функция вызывается, и вызов malloc проверяется на NULL-указатель).Функция находится в другом файле * .c (numin.c), и ее объявление (в numin.h): void numin_read (numin_source *, double *);
Это даже не первый раз, когда программа вызывает функцию изно numin.c единственный, который вылетает.Я знаю, что это не что-то в функции, которая вызывает сбой, потому что он все еще делает это, если я возвращаюсь в первой строке.
Я изо всех сил пытаюсь заставить отладчик присоединиться к программе (несмотря на все описанное здесь ) поэтому я действительно понятия не имею, что там происходит.У кого-нибудь есть идеи, почему это не работает?Я использовал этот код в Linux, и он отлично работает.
Извините, если будет очень мало времени, я продолжу пытаться подключить отладчик, чтобы я мог дать более подробную информацию.Пожалуйста, дайте мне знать, какая другая информация вам нужна.
Редактировать: я не знаю, если это имеет значение, но для сборки программы я собираю каждый из отдельных файлов c в ряд объектных файлов(используя автономный набор инструментов NDK), заархивируйте эти объектные файлы в архивный архив и затем вызовите его как PREBUILT_STATIC_LIBRARY при превращении основного файла c в разделяемую библиотеку, которую я вызываю через NDK ...
РедактироватьЭто странно.Я изменил определение numin_read на void numin_read()
и закомментировал весь код, кроме одного оператора return.По сути, я вызываю функцию, которая не принимает никаких параметров и просто возвращает ... и все равно вылетает!Мне удалось получить что-то из LogCat: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000004
Насколько я понимаю, это связано с распределением памяти?Но я не искажаю, я вызываю только функцию ... Чего мне не хватает?