LINUX.ORG.RU

GDB в Eclipse не делает StepOver через dlopen

 , ,


1

1

Есть функция, которая подгружает «/usr/lib/x86_64-linux-gnu/libpcsclite.so.1»

#include <dlfcn.h>
void *sc_dlopen(const char *filename)
{
	void* ret;
	char* err;

	//ret = dlopen(filename, RTLD_LAZY);
	ret = dlopen(filename, RTLD_NOW);
	if(!ret)
	{
		err = dlerror();
		printf("dlopen error %s\r\n",err?err:"unknown");
	}
	return ret;
}

Ставлю breakpoint на dlopen. При попытке сделать Step Over через dlopen дебагер зависает и дальше не идет. Если запускать программу просто из консоли, то этот код отрабатывает без ошибок (по крайней мере сообщений и с нормальным кодом завершения) и зависаний. С флагами RTLD_LAZY и RTLD_NOW результат одинаковый.

В чем тут может быть дело?

Ответ на: комментарий от pon4ik

Тоже подвисает

Reading symbols from /home/dima/PROJECTS/OpenSC/OpenSC/opensc_test...done.
(gdb) b sc_dlopen
Breakpoint 1 at 0x4c0c54: file common/libscdl.c, line 63.
(gdb) run
Starting program: /home/dima/PROJECTS/OpenSC/OpenSC/opensc_test 

Breakpoint 1, sc_dlopen (filename=0x4fdb40 "/usr/lib/x86_64-linux-gnu/libpcsclite.so.1") at common/libscdl.c:63
(gdb) c
Continuing.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Cannot find new threads: generic error
(gdb) 
bugs-bunny ()
Ответ на: Решено. Спасибо! от bugs-bunny

-lpthread

Только не так. А вот как в man gcc:

-pthread
Define additional macros required for using the POSIX threads library. You should use this option consistently for both compilation and linking.
This option is supported on GNU/Linux targets, most other Unix derivatives, and also on x86 Cygwin and MinGW targets.

gag ★★★★★ ()
Последнее исправление: gag (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.