Незаконная инструкция отладки

Я собрал целый комплект анализа биоинформатики. (https://github.com/iontorrent/TS)
У него много зависимостей (броненосец, блас, лапак, атлас и т. Д.).

При компиляции у меня не было ошибок. Проблема в том, что некоторые из созданных исполняемых файлов не работают и выдают Незаконный инструктион без какой-либо другой информации. Я использую GCC 4.8.2 на CentOS 5.6.

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

./tvc
tvc 4.0-7 () - Torrent Variant Caller

Illegal instruction

Я думаю, что проблема с LAPACK / BLAS / CBLAS.
Я очень запутался в том, как создавать LAPACK / BLAS и CBLAS из исходного кода. (rpm-версия LAPACK / BLAS устарела в Centos 5, для этого программного пакета требуется LAPACK 3.2.1).
Я знаю, как скомпилировать LAPACK и BLAS, я понятия не имею, как установить CBLAS.

Спасибо.

Отредактировано:

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

Я посмотрел их версию и конфигурацию gcc:

gcc -v Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5.1'
--with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)

Моя конфигурация GCC:

Configured with: ../configure --prefix=/share/apps/local/gcc/4.8.2 --with-mpfr=/share/apps/local/gcc/4.8.2 --with-gmp=/share/apps/local/gcc/4.8.2 --with-as=/share/apps/local/binutils/2.24/bin/as --enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.8.2 (GCC)

1

Решение

Есть несколько возможностей; но чтобы решить это, запустите программу в отладчике, как указано

$ gdb ./tvc

из отладчика запустите программу. Примечание: (GDB) является подсказка

(gdb) run

Это должно бросить незаконную инструкцию; отсюда беги

(gdb) bt full

Это скажет вам, где произошла незаконная инструкция.

1

Другие решения

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

Так что внимательно прочитайте, какую библиотеку lapack или blas вы можете использовать для своего процессора. Может быть, вам придется перекомпилировать его для вашего процессора.

0

«Я хотел бы знать, как я могу отладить эти исполняемые файлы»

Начните с запуска его в отладчике. (вот почему это называется отладчик; это помогает тебе отлаживать исполняемые файлы).

Когда программа не работает с «Незаконная инструкция», отладчик сможет показать вам, где произошла ошибка, и предоставить дополнительную информацию о причинах.

-2