Bedingter Breakpoint unter Linux - Wie?
-
Servus zusammen,
Bin neu hier! Schönes Forum!
So, jetzt zu meiner Frage: Ich möchte im Code nur wenn ein boolscher Ausdruck nicht erfüllt ist breaken. Wie geht das unter Linux (gcc/gdb)? - Ich kann mich erinnern, das es bei Windows mit VC++
assert(false);
zu einem break führt. Unter Linux wird ja dann das ganze Programm abgebrochen.
Weiß jemand bescheid? - Danke schon mal für die Antworten!Ciao,
Timo
-
Was für eine IDE verwendest Du denn?
-
//portabel raise(SIGTRAP) //x86er only __asm__ __volatile__("int $0x03");
das musst du nur noch in dein eigenes assert einbauen
-
KDevelop 3.0, aber hat das wirklich was mit der IDE zu tun?
Ciao,
Timo
-
Nix, ich habe Deinen Post nicht aufmerksam genug gelesen; kingruedi hat die Lösung ja schon gepostet...
-
kingruedi schrieb:
//portabel raise(SIGTRAP) //x86er only __asm__ __volatile__("int $0x03");
das musst du nur noch in dein eigenes assert einbauen
Ahhh! Sehr gut! Vielen Dank an kingruedi!
Klappt wunderbar!Ciao,
Timo
-
Wenn ich einen Breakpoint haben will, der nur bei einer bestimmten Bedingung anspringt, dann füge ich meistens Dummy Code ein:
if (Bedinging) { int i = 0; }
Dann kann man schön einen Breakpoint auf die Stelle legen. Falls aber der Code schon kompiliert ist und ich bin schon im Debugger und will das nicht ändern so mache ich das so:
break main.C:22 if Bedingung
Also zum Beispiel:
break main.C:22 if flag == 2