Author Topic: How can Debug System modify program functioning?  (Read 725 times)

HSE

  • Member
  • ****
  • Posts: 554
  • <AMD>< 7-32>
How can Debug System modify program functioning?
« on: December 28, 2016, 01:55:57 AM »
Hi Biterider!!

I'm obtaining differents results with Debug System enabled or not, wich have no sense. The program work as expected with debug enabled, but there is little mistakes when debug is disabled. 

The only way is with SendMessage, I think. But a timer don't solve the issue.

Regards.

Biterider

  • Moderator
  • Member
  • *****
  • Posts: 127
  • ObjAsm32
    • ObjAsm32
Re: How can Debug System modify program functioning?
« Reply #1 on: December 28, 2016, 06:30:57 AM »
Hi HSE
From waht you wrote, I understand that you see a different bahaviour with and without the degugging  system activated. It would help if you give me more information what the problem is and how it manifests. 

I don't have a clue why sendmessage or a timer can help you... :icon_confused:

Biterider

HSE

  • Member
  • ****
  • Posts: 554
  • <AMD>< 7-32>
Re: How can Debug System modify program functioning?
« Reply #2 on: December 28, 2016, 11:55:45 AM »
Hi Biterider!

I don't have a clue why sendmessage or a timer can help you... :icon_confused:

Debug system slow down the program, take it a lot of ... time. (Evidently not a brilliant idea  :biggrin:)

I found a wrong pointer, what bring another magnificent idea: there is more wrong pointers (errors hiding in the debug system? a little cray idea  8))

Debugging enabled:
Code: [Select]
(1/(1+(sin(x+2))^2)*((cos(x+2)*(+(1)+0))))

der.x = 1.000000/(sin(x+2)^2+1)*cos(x+2)

Debugging disabled:
Code: [Select]
(1/(1+(sin(x+2))^2)*((cos(x+2)*(+(1)+0))))

der.x = 1.000000/(sin(x+2)^2+1)**cos(x+2)    <-- is this excedent asterisk
                                                  stored in debug system?

Biterider

  • Moderator
  • Member
  • *****
  • Posts: 127
  • ObjAsm32
    • ObjAsm32
Re: How can Debug System modify program functioning?
« Reply #3 on: December 28, 2016, 07:37:03 PM »
Hi HSE
The Debug System is a set of macros that should not interfere with the rest of your code. It saves and restores all registers (CPU& FPU) and sends messeges to an standalone window (Debug Center) using SendMessageTimeout & COPYDATA, to the Console or a file. If you spit a lot of debug information, it will take some time to process them. That is what you are seeing.

I'm not sure if there is somewhere a collision with SmplMath. As a hint, ObjAsm32 prepends "??" to all internal (non public) symbols and with "DBG_" to all public debugging constants.

I hope it helps.

Biterider

HSE

  • Member
  • ****
  • Posts: 554
  • <AMD>< 7-32>
Re: How can Debug System modify program functioning?
« Reply #4 on: December 29, 2016, 12:41:38 AM »
Hi Biterider!

   Not SimplMath in The Derivator, and there is no problem in programs with it. I think, now, I have an error in a pointer and, of course, debug system insert code, changing offsets.

 It's a little tricky to debug recursive objects:
Code: [Select]
EquAsm OnCreate [EquAsm.inc, 221]
Vuelve de agrega [EquAsm.inc, 246]
szBuff = D2FFFF [EquAsm32_Main.inc, 313]
──────────────────────────────────────────────────────────────────────
eax = 1101t [EquAsm.inc, 608]
EquationFileName =  [EquAsm.inc, 609]
Open file [EquAsm.inc, 612]
paso el open [EquAsm.inc, 614]
EquationFileName = ej2.eqt [EquAsm.inc, 615]
bx = 1101t [EquAsm.inc, 628]
compara bx [EquAsm.inc, 631]
──────────────────────────────────────────────────────────────────────
eax = 1100t [EquAsm.inc, 608]
EquationFileName = ej2.eqt [EquAsm.inc, 609]
paso el save [EquAsm.inc, 621]
bx = 1100t [EquAsm.inc, 628]
compara bx [EquAsm.inc, 631]
 [esi].level = 0t [CleanNodo.inc, 168]
 [esi].entrada = (1/(1+(sin(x+2))^2)*((cos(x+2)*(+(1)+0)))) [CleanNodo.inc, 172]
 [esi].soluto = (1/(1+(sin(x+2))^2)*((cos(x+2)*(+(1)+0)))) [CleanNodo.inc, 176]
 is Closed [CleanNodo.inc, 176]
 [esi].level = 0t [CleanNodo.inc, 168]
 [esi].entrada = 1/(1+(sin(x+2))^2)*((cos(x+2)*(+(1)+0))) [CleanNodo.inc, 172]
 Hay Mul [CleanNodo.inc, 176]
 Hay Mul [CleanNodo.inc, 176]
 [esi].soluto = 1/(1+(sin(x+2))^2)*((cos(x+2)*(+(1)+0))) [CleanNodo.inc, 176]
 isMul [CleanNodo.inc, 176]
¦   [esi].level = 1t [CleanNodo.inc, 168]
¦   [esi].entrada = 1 [CleanNodo.inc, 172]
¦   [esi].soluto = 1 [CleanNodo.inc, 176]
¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   isSimple [CleanNodo.inc, 176]
¦   [esi].salida = 1 [CleanNodo.inc, 176]
¦   [esi].isUno = 1t [CleanNodo.inc, 176]
¦   [esi].level = 1t [CleanNodo.inc, 168]
¦   [esi].entrada = (1+(sin(x+2))^2) [CleanNodo.inc, 172]
¦   [esi].soluto = (1+(sin(x+2))^2) [CleanNodo.inc, 176]
¦   is Closed [CleanNodo.inc, 176]
¦   [esi].level = 1t [CleanNodo.inc, 168]
¦   [esi].entrada = 1+(sin(x+2))^2 [CleanNodo.inc, 172]
¦   Hay Add [CleanNodo.inc, 176]
¦   Hay Pow [CleanNodo.inc, 176]
¦   [esi].soluto = 1+(sin(x+2))^2 [CleanNodo.inc, 176]
¦   isAdd [CleanNodo.inc, 176]
¦   Procesa Sumatoria [CleanNodo.inc, 190]
¦   tope = 13t [CleanNodo.inc, 190]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = 1 [CleanNodo.inc, 172]
¦   ¦   [esi].soluto = 1 [CleanNodo.inc, 176]
¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   [esi].salida = 1 [CleanNodo.inc, 176]
¦   ¦   [esi].isUno = 1t [CleanNodo.inc, 176]
¦   vuelve de solution [CleanNodo.inc, 190]
¦   [edx].entrada = 1 [CleanNodo.inc, 190]
¦   Otro EquNodo [CleanNodo.inc, 190]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = (sin(x+2))^2 [CleanNodo.inc, 172]
¦   ¦   Hay Pow [CleanNodo.inc, 176]
¦   ¦   [esi].soluto = (sin(x+2))^2 [CleanNodo.inc, 176]
¦   ¦   isPow [CleanNodo.inc, 176]
¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   Es potencial [CleanNodo.inc, 198]
¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = (sin(x+2)) [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = (sin(x+2)) [CleanNodo.inc, 176]
¦   ¦   ¦   is Closed [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = sin(x+2) [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = sin(x+2) [CleanNodo.inc, 176]
¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].salida = sinx+2 [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   [ebx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   ecx = 1t [CleanNodo.inc, 198]
¦   ¦   eax = 11t [CleanNodo.inc, 198]
¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   eax = 50626799t [CleanNodo.inc, 198]
¦   ¦   [ebx].entrada = 2 [CleanNodo.inc, 198]
¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 198]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = 2 [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].salida = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   [edx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   [edx].salida = 2 [CleanNodo.inc, 198]
¦   ¦   -----  No es uno ni cero [CleanNodo.inc, 198]
¦   ¦   [ebx].isQue = 0t [CleanNodo.inc, 198]
¦   ¦   [ecx].isQue = 3t [CleanNodo.inc, 198]
¦   ¦   -----  no es integer ni float [CleanNodo.inc, 198]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = sin(x+2)^2 [CleanNodo.inc, 172]
¦   ¦   ¦   Hay Pow [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].soluto = sin(x+2)^2 [CleanNodo.inc, 176]
¦   ¦   ¦   isPow [CleanNodo.inc, 176]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   Es potencial [CleanNodo.inc, 198]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   ¦   [esi].level = 4t [CleanNodo.inc, 168]
¦   ¦   ¦   ¦   [esi].entrada = sin(x+2) [CleanNodo.inc, 172]
¦   ¦   ¦   ¦   [esi].soluto = sin(x+2) [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].salida = sinx+2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   ¦   [ebx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   ¦   ecx = 1t [CleanNodo.inc, 198]
¦   ¦   ¦   eax = 9t [CleanNodo.inc, 198]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   eax = 2552263t [CleanNodo.inc, 198]
¦   ¦   ¦   [ebx].entrada = 2 [CleanNodo.inc, 198]
¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 198]
¦   ¦   ¦   ¦   [esi].level = 4t [CleanNodo.inc, 168]
¦   ¦   ¦   ¦   [esi].entrada = 2 [CleanNodo.inc, 172]
¦   ¦   ¦   ¦   [esi].soluto = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].salida = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   ¦   [edx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   ¦   [edx].salida = 2 [CleanNodo.inc, 198]
¦   ¦   ¦   -----  No es uno ni cero [CleanNodo.inc, 198]
¦   ¦   ¦   [ebx].isQue = 0t [CleanNodo.inc, 198]
¦   ¦   ¦   [ecx].isQue = 3t [CleanNodo.inc, 198]
¦   ¦   ¦   -----  no es integer ni float [CleanNodo.inc, 198]
¦   [edx].entrada = (sin(x+2))^2 [CleanNodo.inc, 190]
¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   [ecx].isQue = 4t [CleanNodo.inc, 190]
¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   Hay entero [CleanNodo.inc, 190]
¦   [ecx].salida = 1 [CleanNodo.inc, 190]
¦   [ecx].preoperator = 43t [CleanNodo.inc, 190]
¦   [ecx].isNegative = 0t [CleanNodo.inc, 190]
¦   eax = 1t [CleanNodo.inc, 190]
¦   [ecx].isQue = 4t [CleanNodo.inc, 190]
¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = sin(x+2)^2+1 [CleanNodo.inc, 172]
¦   ¦   Hay Pow [CleanNodo.inc, 176]
¦   ¦   Hay Add [CleanNodo.inc, 176]
¦   ¦   [esi].soluto = sin(x+2)^2+1 [CleanNodo.inc, 176]
¦   ¦   isAdd [CleanNodo.inc, 176]
¦   ¦   Procesa Sumatoria [CleanNodo.inc, 190]
¦   ¦   tope = 11t [CleanNodo.inc, 190]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = sin(x+2)^2 [CleanNodo.inc, 172]
¦   ¦   ¦   Hay Pow [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].soluto = sin(x+2)^2 [CleanNodo.inc, 176]
¦   ¦   ¦   isPow [CleanNodo.inc, 176]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   Es potencial [CleanNodo.inc, 198]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   ¦   [esi].level = 4t [CleanNodo.inc, 168]
¦   ¦   ¦   ¦   [esi].entrada = sin(x+2) [CleanNodo.inc, 172]
¦   ¦   ¦   ¦   [esi].soluto = sin(x+2) [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].salida = sinx+2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   ¦   [ebx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   ¦   ecx = 1t [CleanNodo.inc, 198]
¦   ¦   ¦   eax = 9t [CleanNodo.inc, 198]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   eax = 50626799t [CleanNodo.inc, 198]
¦   ¦   ¦   [ebx].entrada = 2 [CleanNodo.inc, 198]
¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 198]
¦   ¦   ¦   ¦   [esi].level = 4t [CleanNodo.inc, 168]
¦   ¦   ¦   ¦   [esi].entrada = 2 [CleanNodo.inc, 172]
¦   ¦   ¦   ¦   [esi].soluto = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].salida = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   ¦   [edx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   ¦   [edx].salida = 2 [CleanNodo.inc, 198]
¦   ¦   ¦   -----  No es uno ni cero [CleanNodo.inc, 198]
¦   ¦   ¦   [ebx].isQue = 0t [CleanNodo.inc, 198]
¦   ¦   ¦   [ecx].isQue = 3t [CleanNodo.inc, 198]
¦   ¦   ¦   -----  no es integer ni float [CleanNodo.inc, 198]
¦   ¦   vuelve de solution [CleanNodo.inc, 190]
¦   ¦   [edx].entrada = sin(x+2)^2 [CleanNodo.inc, 190]
¦   ¦   Otro EquNodo [CleanNodo.inc, 190]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = 1 [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].salida = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].isUno = 1t [CleanNodo.inc, 176]
¦   ¦   [edx].entrada = 1 [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 4t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 4t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   Hay entero [CleanNodo.inc, 190]
¦   ¦   [ecx].salida = 1 [CleanNodo.inc, 190]
¦   ¦   [ecx].preoperator = 43t [CleanNodo.inc, 190]
¦   ¦   [ecx].isNegative = 0t [CleanNodo.inc, 190]
¦   ¦   eax = 1t [CleanNodo.inc, 190]
¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   [esi].level = 1t [CleanNodo.inc, 168]
¦   [esi].entrada = ((cos(x+2)*(+(1)+0))) [CleanNodo.inc, 172]
¦   [esi].soluto = ((cos(x+2)*(+(1)+0))) [CleanNodo.inc, 176]
¦   is Closed [CleanNodo.inc, 176]
¦   [esi].level = 1t [CleanNodo.inc, 168]
¦   [esi].entrada = (cos(x+2)*(+(1)+0)) [CleanNodo.inc, 172]
¦   [esi].soluto = (cos(x+2)*(+(1)+0)) [CleanNodo.inc, 176]
¦   is Closed [CleanNodo.inc, 176]
¦   [esi].level = 1t [CleanNodo.inc, 168]
¦   [esi].entrada = cos(x+2)*(+(1)+0) [CleanNodo.inc, 172]
¦   Hay Mul [CleanNodo.inc, 176]
¦   [esi].soluto = cos(x+2)*(+(1)+0) [CleanNodo.inc, 176]
¦   isMul [CleanNodo.inc, 176]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = cos(x+2) [CleanNodo.inc, 172]
¦   ¦   [esi].soluto = cos(x+2) [CleanNodo.inc, 176]
¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   [esi].salida = cosx+2 [CleanNodo.inc, 176]
¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = (+(1)+0) [CleanNodo.inc, 172]
¦   ¦   [esi].soluto = (+(1)+0) [CleanNodo.inc, 176]
¦   ¦   is Closed [CleanNodo.inc, 176]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = +(1)+0 [CleanNodo.inc, 172]
¦   ¦   Hay Add [CleanNodo.inc, 176]
¦   ¦   [esi].soluto = (1)+00 [CleanNodo.inc, 176]
¦   ¦   isAdd [CleanNodo.inc, 176]
¦   ¦   Procesa Sumatoria [CleanNodo.inc, 190]
¦   ¦   tope = 5t [CleanNodo.inc, 190]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = (1) [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = (1) [CleanNodo.inc, 176]
¦   ¦   ¦   is Closed [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = 1 [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].salida = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].isUno = 1t [CleanNodo.inc, 176]
¦   ¦   vuelve de solution [CleanNodo.inc, 190]
¦   ¦   [edx].entrada = 1 [CleanNodo.inc, 190]
¦   ¦   Otro EquNodo [CleanNodo.inc, 190]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = 0 [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = 0 [CleanNodo.inc, 176]
¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].salida = 0 [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   [edx].entrada = 0 [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   Hay entero [CleanNodo.inc, 190]
¦   ¦   [ecx].salida = 1 [CleanNodo.inc, 190]
¦   ¦   [ecx].preoperator = 43t [CleanNodo.inc, 190]
¦   ¦   [ecx].isNegative = 0t [CleanNodo.inc, 190]
¦   ¦   eax = 1t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   Hay entero [CleanNodo.inc, 190]
¦   ¦   [ecx].salida = 0 [CleanNodo.inc, 190]
¦   ¦   [ecx].preoperator = 43t [CleanNodo.inc, 190]
¦   ¦   [ecx].isNegative = 0t [CleanNodo.inc, 190]
¦   ¦   eax = 0t [CleanNodo.inc, 190]
¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = 1 [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].salida = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].isUno = 1t [CleanNodo.inc, 176]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = cos(x+2) [CleanNodo.inc, 172]
¦   ¦   [esi].soluto = cos(x+2) [CleanNodo.inc, 176]
¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   [esi].salida = cosx+2 [CleanNodo.inc, 176]
¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   [esi].level = 1t [CleanNodo.inc, 168]
¦   [esi].entrada = 1.000000/(sin(x+2)^2+1)*cos(x+2) [CleanNodo.inc, 172]
¦   Hay Mul [CleanNodo.inc, 176]
¦   Hay Mul [CleanNodo.inc, 176]
¦   [esi].soluto = 1.000000/(sin(x+2)^2+1)*cos(x+2) [CleanNodo.inc, 176]
¦   isMul [CleanNodo.inc, 176]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = 1.000000 [CleanNodo.inc, 172]
¦   ¦   [esi].soluto = 1.000000 [CleanNodo.inc, 176]
¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   [esi].salida = 1.000000 [CleanNodo.inc, 176]
¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = (sin(x+2)^2+1) [CleanNodo.inc, 172]
¦   ¦   [esi].soluto = (sin(x+2)^2+1) [CleanNodo.inc, 176]
¦   ¦   is Closed [CleanNodo.inc, 176]
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = sin(x+2)^2+1 [CleanNodo.inc, 172]
¦   ¦   Hay Pow [CleanNodo.inc, 176]
¦   ¦   Hay Add [CleanNodo.inc, 176]
¦   ¦   [esi].soluto = sin(x+2)^2+1 [CleanNodo.inc, 176]
¦   ¦   isAdd [CleanNodo.inc, 176]
¦   ¦   Procesa Sumatoria [CleanNodo.inc, 190]
¦   ¦   tope = 11t [CleanNodo.inc, 190]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = sin(x+2)^2 [CleanNodo.inc, 172]
¦   ¦   ¦   Hay Pow [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].soluto = sin(x+2)^2 [CleanNodo.inc, 176]
¦   ¦   ¦   isPow [CleanNodo.inc, 176]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   Es potencial [CleanNodo.inc, 198]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   ¦   [esi].level = 4t [CleanNodo.inc, 168]
¦   ¦   ¦   ¦   [esi].entrada = sin(x+2) [CleanNodo.inc, 172]
¦   ¦   ¦   ¦   [esi].soluto = sin(x+2) [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].salida = sinx+2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   ¦   [ebx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   ¦   ecx = 1t [CleanNodo.inc, 198]
¦   ¦   ¦   eax = 9t [CleanNodo.inc, 198]
¦   ¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   ¦   eax = 50626799t [CleanNodo.inc, 198]
¦   ¦   ¦   [ebx].entrada = 2 [CleanNodo.inc, 198]
¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 198]
¦   ¦   ¦   ¦   [esi].level = 4t [CleanNodo.inc, 168]
¦   ¦   ¦   ¦   [esi].entrada = 2 [CleanNodo.inc, 172]
¦   ¦   ¦   ¦   [esi].soluto = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].salida = 2 [CleanNodo.inc, 176]
¦   ¦   ¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]
¦   ¦   ¦   [edx].salida = sin(x+2) [CleanNodo.inc, 198]
¦   ¦   ¦   [edx].salida = 2 [CleanNodo.inc, 198]
¦   ¦   ¦   -----  No es uno ni cero [CleanNodo.inc, 198]
¦   ¦   ¦   [ebx].isQue = 0t [CleanNodo.inc, 198]
¦   ¦   ¦   [ecx].isQue = 3t [CleanNodo.inc, 198]
¦   ¦   ¦   -----  no es integer ni float [CleanNodo.inc, 198]
¦   ¦   vuelve de solution [CleanNodo.inc, 190]
¦   ¦   [edx].entrada = sin(x+2)^2 [CleanNodo.inc, 190]
¦   ¦   Otro EquNodo [CleanNodo.inc, 190]
¦   ¦   ¦   [esi].level = 3t [CleanNodo.inc, 168]
¦   ¦   ¦   [esi].entrada = 1 [CleanNodo.inc, 172]
¦   ¦   ¦   [esi].soluto = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].salida = 1 [CleanNodo.inc, 176]
¦   ¦   ¦   [esi].isUno = 1t [CleanNodo.inc, 176]
¦   ¦   [edx].entrada = 1 [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 4t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 4t [CleanNodo.inc, 190]
¦   ¦   [ecx].isQue = 0t [CleanNodo.inc, 190]
¦   ¦   Hay entero [CleanNodo.inc, 190]
¦   ¦   [ecx].salida = 1 [CleanNodo.inc, 190]
¦   ¦   [ecx].preoperator = 43t [CleanNodo.inc, 190]
¦   ¦   [ecx].isNegative = 0t [CleanNodo.inc, 190]
¦   ¦   eax = 1t [CleanNodo.inc, 190]
¦   ¦   ──────────────────────────────────────────────────────────────────────
¦   ¦   [esi].level = 2t [CleanNodo.inc, 168]
¦   ¦   [esi].entrada = cos(x+2) [CleanNodo.inc, 172]
¦   ¦   [esi].soluto = cos(x+2) [CleanNodo.inc, 176]
¦   ¦   Ini_clean is Simple [CleanNodo.inc, 176]
¦   ¦   isSimple [CleanNodo.inc, 176]
¦   ¦   [esi].salida = cosx+2 [CleanNodo.inc, 176]
¦   ¦   [esi].isUno = 0t [CleanNodo.inc, 176]

I extended debug system with "supra" macros. For that, the object have a "level" variable that increase with recursivity. The macros need level and number of characters of columns.

For example I can call directly the macro:
Code: [Select]
DbgTextSupra [esi].level, 4, "Potential Term"or set column and number of characters per columns at the beginning of the object (more nice):
Code: [Select]
SetDbgR [esi].level, 4and later call the short form:
Code: [Select]
DbgTextR "Potential Term"