LINUX.ORG.RU

segmentation fault


0

0

как узнать, почему прога сегфолтится? дебаггер ничего вразумительного не говорит

thomas@friday work $ gdb ./polina

. . .

(gdb) run
Starting program: /E/Projects/polina/work/polina

Program received signal SIGSEGV, Segmentation fault.
0x08051e1a in main ()

★★★

Вообще-то существуют в природе маны.
Во вторых, если вы себя не утруждаете чтением документации,
то хотя бы раз наберите команду help в gdb и там вы прочитаете о:

bt
info locals
info threads
display что-нибудь
frame

WBR,
jr_A


P.S. Вопиющая безграмотность. Читайте документацию!

anonymous
()
Ответ на: комментарий от alphex_kaanoken

Ишо есть ddd - становицца немного удобнее отлаживаться в графическом интерфейсе.

Запускаецца оно так же, как и gdb:

ddd ./polina

jek_
()
Ответ на: комментарий от seiken

где сегфолтится, выяснил. вот кусок кода:

if (config_get_bool("options", "reopen_files")) {
	gint files_num;
	gchar **files = (gchar**)config_get_string_array("reopen", "files", &files_num);
	for (i=0; i<files_num; i++) {
		new_tab(files[i]); //здесь
	}
	g_free(files);
}
заменяю new_tab(files[i]) на printf("%s: \n", files[i]) - та же фигня. заменяю на printf("%d\n", i) - 
запускается, но из цикла выйти не может, печатает цифры, пока не нажмешь Ctrl+C.
Причем это бывает только тогда, когда в files есть русские символы.

вот функция, которая возвращает files:

gchar **config_get_string_array(gchar *group, gchar *key, gint *s) {
	gsize size;
	gchar **list = g_key_file_get_string_list(confile, group, key, &size, &cerr);
	*s = size;
	return list;
}



ЗЫ: gtk-2.8.12, glib-2.8.6, gcc-3.4.5

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

проверил. если есть русские буквы, files = NULL, a files_num = <до хрена большое число>. если нет - все в порядке

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

Сегфолт ИМХО из-за попытки народить слишком много табов, или чё там new_tab () нарождает. Проверь значение files_num, чему оно равное?

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

> Сегфолт ИМХО из-за попытки народить слишком много табов, или чё там new_tab () нарождает. Проверь значение files_num, чему оно равное?

> А в какой кодировке русские буквинки? В утф8? G_BROKEN_FILENAMES как?

с new_tab все в порядке.

я уже разобрался, в чем проблема. просто русские буквы были в kio8-r, а g_key_file_* умеют работать только c utf8

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