C - Eclipse - "Смешанный" диалект и программа поддержки аварийного сбоя ANSI?

У меня была странная проблема с C в Eclipse. Щелкнув правой кнопкой мыши по моему проекту, я захожу в Свойства, Сборка C/C++, Настройки, Gcc C Compiler Dialect. В выпадающем меню по умолчанию ничего нет в Language Standard, и моя программа работает нормально. Однако при изменении на что-либо другое (C90, C99 или C11) программа вылетает при запуске.

Используя отладчик, я посмотрел на разборку и получил жалобу относительно strln() по какому-то адресу памяти, и я не уверен, что делать дальше.

Вот некоторая сборка:

mov (%ecx),%al
add $0x1,%ecx
test %al,%al
je 0x75234434 <strlen+97>
test $0x3,%ecx
jne 0x752343df <strlen+12>
...

Интересно, что без указания диалекта, щелкнув Разное и щелкнув Поддержка программ ANSI (-ansi), выдает точно такую ​​же ошибку.

Любые советы приветствуются:)

Tracebook по запросу:

#0  0x752343df in strlen () from C:\WINDOWS\syswow64\msvcrt.dll
#1  0x0044e2bd in __mingw_pformat ()
#2  0x0044ca5f in __mingw_vfprintf ()
#3  0x00417156 in fprintf (__stream=0x752c2980 <msvcrt!_iob+128>, __format=0x4561dc <__register_frame_info+4547036> "%s %.2lf %s %.0lf %.0lf %.2lf %.2lf %.2lf %.2lf ") at c:/mingw/include/stdio.h:246
#4  0x00418893 in skriv_v_profil (tag=0x809fe8, nasta_stat=..., sign=1, variant=2) at ..\src\kortid.c:314
#5  0x00419d65 in kor_tid (tag=0x809fe8, v2=24.25, smax=452, tmax=100000) at ..\src\kortid.c:642
#6  0x00427fdb in gang_tid (tag=0x809fe8, ret_kod=2, tmax=100000, skriv_g3=0, test_finnsg3=0, t_ack=3030.5876288659802) at ..\src\gangtid.c:2617
#7  0x00403215 in kor_tag (taget=0x809fe8, lanken=0x7cc338, riktning=1, result=0x7da1f8, resflg=7) at ..\src\ttt2gtk.c:702
#8  0x00407ff7 in grenkortag (banap=0x28fd6c, grnidx=0, tagtyp=0x7e6ea0, ttpidx=0, riktn=1, resflg=7, stppl=0x0, resp=0x28fd34) at ..\src\ttt2gtk.c:2405
#9  0x004201b8 in main (argc=11, argv=0x7e1b00) at ..\src\gtb.c:991

Извините, я пропустил копирование второй половины, поскольку окно было действительно маленьким.

1 ответ

Я считаю, что нашел ошибку. Одна из переменных становится -1 и выделяется в Eclipse. Я понятия не имею о деталях, но я думаю, что решение будет очень конкретным, и мне придется найти его самому. Спасибо Джону Боде и WhozCraig за помощь, особенно в отношении отслеживания. Спасатели, спасибо!

Другие вопросы по тегам