Home

Ninja-Segfault

Montag, 7. Februar 2011 | Autor:

Letz­te Woche hat­te ich einen Bug, der mich 4 Stun­den und die ent­spre­chen­de Men­ge Ner­ven gekos­tet hat. Der Ori­gi­nal­code ist ziem­lich undurch­sich­tig, des­we­gen habe ich eine klei­ne, kom­pi­lier­ba­re Demo geschrieben:

#include <vector>
#include <stack>

class Blubb
{
	public:
		std::vector<int> * liste;
		Blubb() {
			liste = new std::vector<int>(10);
		}
		~Blubb() {
			delete liste;
		}
};

int main()
{
	std::stack<Blubb> stapel;
	Blubb blip;
	stapel.push(blip);
	return 0;
}

Wer meint, C++ zu beherr­schen, darf jetzt grü­beln, war­um die­ser Code einen Seg­fault wirft. Viel Spaß dabei! 😉 wei­ter…

Thema: Sezierte C++-Käfer | 2 Kommentare

Debugger - GDB

Montag, 22. November 2010 | Autor:

Debug­ger sind Pro­gram­me, die einem bei der Feh­ler­su­che hel­fen sol­len. Mit einem Debug­ger kann man das Pro­gramm qua­si bei der Arbeit beob­ach­ten: Wel­che Code­zei­le wird als nächs­tes aus­ge­führt? Was ent­hält die­se und jene Varia­ble momen­tan? Wie sieht der Call-Stack/­Back­trace momen­tan aus? An wel­cher Stel­le stürzt das Pro­gramm genau ab? und vie­les ande­res mehr.

Für C++ (und jede Men­ge ande­rer Spra­chen) gibt es den GNU-Debug­ger, kurz GDB. wei­ter…

Thema: Programmieren, Sezierte C++-Käfer | Beitrag kommentieren