Monday, January 23, 2012

C'est ça, être branché.

Dans le monde de Bilou, le tileset et ses habitants vivent en paix. Le GameEngine maintient l'équilibre et l'harmonie de ce monde. Désolé, les amis. Apparemment, ça ne va pas durer...

Car, un funeste jour, l'horrible Mr. Pype bidouille le GameEngine et neutralise les pouvoirs du Makefile qui cherchait à le recompiler! Les GobStates, qui gravitaient autour de l'Engine perdent soudain leur stabilité naturelle ... et s'éparpillent dans tout l'disque dur! Préoccupant, non ?
Et en plus, ça fait désordre.

Dans ce monde à présent déséquilibré, d'étrange phénomènes se produisent ... des Applemen hostiles apparaissent plus vite que prévu, et quand on essaie de les assomer, ils se téléportent sur la gauche avant de revenir à la charge de plus belle ... non sans s'être momentanément transmuté en BerryBat ou en buisson ...

Remember when everything in Bilou's world was messed up to the point that Bilou turned into a jumping bush wandering around bubble-headed-trees? Well, with the regression test I applied to AppleAssault with the game-engine modification that are supposed to bring in compound animation, it appeared again. Applemen being flooded over the level rather than appearing progressively, they'd also stay stunned for much shorter and show some odd "side-effects", such as temporarily turning into berry bat on wake-up and even sometimes "teleporting" to the left while being pwned.

I had just introduced CommonGob, that captures the GobState management, including the reaction to an event (evaluating expressions, and so on), while the animation itself is still manipulated by SimpleGob (now a class deriving from CommonGob). It took me a couple of fixes to separate them right while still having the animation restarted from scratch when we switch states (and some more tests to handle the state3->state3 case). It would have been a mere lunchtime debugging session not worth mention if GDB hadn't decide to black-hole the SimpleGob class. No line numbers, no breakpoint, no variable or structure interpretation. Nothing but instruction stepping and register values >_<. I still haven't found out why, but I fixed the code nonetheless.


Bref, on aurait bien voulu appeler DDD à la rescousse, mais pas de chance: il ne parvient plus à interpréter une partie des annotations qui accompagnent les quelques classes maîtresses ... plus de visualisation des objets, plus de suivi des instructions ligne-par-ligne ... rien. sauf dans objdump. A en perdre son latin.

3 comments:

PypeBros said...

(hmm ... et apparemment, le problème gdb est plus ancien que ma branche "companim")

PypeBros said...

Voyons un peu les sources de gdb ...

"No source file for address %sal.pc." => sal.symtab==0 @ cli-cmds.c # 922 { line_command(*arg, from_tty) }
sal = sals.sals[0] @ #866
sals = decode_line_1(&arg1, ...) @#855

'sal' stands for "symtabs_and_lines"

decode_line_1 va appeler decode_indirect() puisque j'ai utilisé "list *0x0203c574"

=> values.sals[0] = find_pc_line (pc, 0);
=> find_pc_sect_line(pc, &section, ?notcurrent) {symtab.c}

merci, cscope.

cyborgjeff said...

disons hulmmm

arf ?