Контроль Вход в статическую библиотеку (.a) и никогда не возвращается - PullRequest
0 голосов
/ 23 сентября 2011

Я связал статическую библиотеку с моим кодом (.a).Но во время выполнения управление переходит к библиотеке при вызове API, но никогда не возвращается,

ex: archived test_func.o in test.a which has implementation test_func(),
    calling test_func() from main.c

    Printf("inside main now")
    test_func();
    Printf("returned from lib - in main");

    the second printf, never gets called and the message never gets displayed on the console. 

Может кто-нибудь подсказать, в чем может быть проблема?

1 Ответ

0 голосов
/ 16 марта 2012

Если оно никогда не печатает второе сообщение, то оно либо выходит из функции (в этом случае ваша программа должна завершиться), либо test_func() имеет бесконечный цикл (хотя имейте в виду, что это может занять больше времени, чем вы готов ждать).

Не видя код для test_func(), мы не можем точно сказать, в чем конкретно проблема.

Если у вас нет исходного кода для test_func(), лучшее, что вы сможете сделать, это запустить его, а затем вызвать дамп ядра извне, например, с помощью kill -6. Затем вы можете загрузить исполняемый файл и файл ядра в gdb, чтобы попытаться выяснить, что он делает.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...