LINUX.ORG.RU

gcc/g++ - включить добавление номеров строк в .o/.so/.elf


0

0

Отлаживаю valgrind'ом, он пишет просто адреса. А может ведь, зараза, писать и номер строки. Как этого добиться?

==14113== Invalid read of size 8
==14113==    at 0x400B78: main (in /home/projects/clusterdb2/src/clusterdb2)
==14113==  Address 0x5d40040 is 0 bytes inside a block of size 24 free'd
==14113==    at 0x4C21ACE: operator delete(void*) (vg_replace_malloc.c:346)
==14113==    by 0x61408AE: ???
==14113==    by 0x400B5F: main (in /home/projects/clusterdb2/src/clusterdb2)
★★★
Ответ на: комментарий от Sphinx

чё-то всё пересобрал но не помогло. аа, кстати да. код main такой (укороченно):

#include <dlfcn.h>
#include <stdio.h>
#include <atoms.h>
#include <dbfuncs/_all.h>

int main(int argc,char **argv)
{
	char *error;
	void *so;
	typedef void(*funcref)(void);
	funcref work;

.....
	printf("Opening library %s\n",argv[1]);
	so=dlopen(argv[1],RTLD_NOW);
	printf("Searching for symbol void work(void);\n");
	work=(funcref)dlsym(so,"work");
	printf("Executing void work(void);\n");
	(*work)();
	printf("Done\n");
	dlclose(so);
.....
}

то есть оно цепляет dlopen'ом мою же библиотеку, а бОльшая часть функций тоже располагается в libdb.so. может это мешает.

vahvarh ★★★
() автор топика
Ответ на: комментарий от vahvarh

Нет, valgrind нормально работает с .so. Убедись, что всё точно собрано с -g. Еще желательно оптимизацию отключить.

Reset ★★★★★
()
Ответ на: комментарий от Reset

>Еще желательно оптимизацию отключить.

не то что бы желательно, ее вообще нужно отключать ибо тогда с исходником вообще не состыкуешься.

Deleted
()

-g тебе нужен что бы писать debug symbols, эти символы всегда можно выкинуть из файла сделав ему strip

выключить оптимизацию стоит только, когда ты хочешь это дебажить. Т.е. если ты ее не выключишь, то некоторых функций просто не будет, и многие переменные (самые интересные) будут иметь значение <optimized value>

catap ★★★★★
()
Ответ на: комментарий от Deleted

А зачем ему, для valgrind, отключать оптимизацию?

catap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.