Всегда программировал под Linux, компилируя программы с gcc, но сейчас пишу прогу чисто под Windows, используя cl+link. Всё вроде бы нормально, но иногда попадаю с ситуацию, которая в Linux называется Segmentation Fault. Проблема в том, что хрен знает где именно в моей программе происходит сбой. Под Linux есть дебаггер gdb, у которого есть комманда bt (BackTrace), при помощи которой можно посмотреть место последнего вызова и даже строку в коде. Но т.к. я сейчас не использую gdb, посмотреть не могу. Ещё проблема усложняется тем, что я не использую среду Visual C++, а использую привычный мне VIM. Т.е. у меня нет дебаггера, встроенного в среду. Может его можно использовать вне среды? Может подскажете как? Ещё я слышал есть WinDbg, но как им пользоваться - я так и не разобрался. Ещё у меня на компе есть OllyDbg 1.10, но как её пользоваться для Back Trace я не уловил... может зря. В общем - проблема в откладки кода, написанного не в студии (вижуал)
cdb, после gdb не думаю что будет проблема разобраться http://www.codeproject.com/KB/debug/cdbntsd.aspx первая ссылка в гугле
Эээ, да... маразм крепчал.. 1) бегом сюда: http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx 2) в Makefile поставь "cl ..... /Zi" и "link .... /DEBUG" 3) WinDBG: File -> Open Executable, Debug -> Run
а что мешает пользоваться mingw (gcc порт на win32) и gdb (тоже порт на win32). Я так делаю и ОС вообще никак не влияет на процесс разработки. update: vim конечно тоже неотъемлимый инструмент, независимо от ОС.
Подумываю о переходе на gcc, ибо уже замучился с этим компилятором :-( Там (в MinGW) вроде есть поддержка WinAPI...
AlannY, если хочешь gcc, то кочни cygwin и получишь bash/gcc/g++/ld и, ессно, Posix API. Кста, GUI отлачика лучше чем в VS2005/2008 просто на рынке нет (ессно разговор про C++ проги c исходником). C другой стороны gdb работат через TCP или serial и с разным железом
а почему бы не использовать Visual Studio, где все удобно в одном месте расположено? PS. в олли есть кнопочка K кажется она выводит call stack. это ты имел в виду под бектрейс? (с гдб не работал)
советую разобраться с WinDbg. кстати: http://www.codeproject.com/KB/debug/windbg_part1.aspx#_Toc64133671
DrWatson не помогает? Там можно выставить глубину детализации и, в удачном случае, определиться до строки кода. Может помочь и простая трассировка (SI, IDA Debugger, Borland TD32). Наконец, в _собственном_ коде ничего не стоит вставить логгирование/отладочную печать/трассировку (#ifdef __DEBUG__). Как пример, создать кольцевой буфер на ~256 Kb, засунуть весь код в единственный try/catch, из всех проблемных функций писать отладочную выдачу в этот буфер, при крэше дампить его на диск. Простейший вьювер покажет не только весь стэк вызовов (логгированный), но и значения критических переменных.