Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Marzo 07, 2024, 08:57:28 am

Titolo: Problema strano con il debug
Inserito da: bonmario - Marzo 07, 2024, 08:57:28 am
Ciao a tutti,
mi sta succedendo una cosa strana ...
Debuggando il codice qui sotto:
Codice: [Seleziona]
              if (NumPid = PidAttuale) then begin
                //Se l'applicativo che devo portare il primo piano è "me stesso"
                NomeExeAttuale:=Application.ExeName;
                NomeExeInPrimoPiano:=GetCurrentActiveProcessPath;
                if (not Application.Active) or
                   (LowerCase(NomeExeAttuale) <> LowerCase(NomeExeInPrimoPiano)) then begin
                  //Non ha il focus
                  ShowWindow(Wrk_hwnd, SW_SHOWMINIMIZED); //La minimizzo
                  ShowWindow(Wrk_hwnd, SW_SHOWNORMAL);    //La mostro normale. Se non l'avessi prima minimizzata, non avrebbe sentito la variazione,
                                                          //e non avrebbe fatto il lavoro corretto
                  SetForegroundWindow(Wrk_hwnd); //Aggiunta il 02/02/2021, per la verifica che faccio sugli MRP modificati da Roberta
                end else begin
                  //Ha già il focus
                  SetForegroundWindow(Wrk_hwnd);
                end;
              end else begin
                //Se l'applicativo "A", deve portare in primo piano l'applicativo "B"
                ShowWindow(Wrk_hwnd, SW_SHOWMINIMIZED); //La minimizzo
                ShowWindow(Wrk_hwnd, SW_SHOWNORMAL);    //La mostro normale. Se non l'avessi prima minimizzata, non avrebbe sentito la variazione,
                                                        //e non avrebbe fatto il lavoro corretto
                SwitchToThisWindow(Wrk_hwnd, True); //https://docs.microsoft.com/it-it/windows/win32/api/winuser/nf-winuser-switchtothiswindow?redirectedfrom=MSDN
              end;


Sono fermo col debug sulla riga
Codice: [Seleziona]
SetForegroundWindow(Wrk_hwnd); //Aggiunta il 02/02/2021, per la verifica che faccio sugli MRP modificati da Roberta

La eseguo, ed il debugger passa alla riga
Codice: [Seleziona]
SwitchToThisWindow(Wrk_hwnd, True); //https://docs.microsoft.com/it-it/windows/win32/api/winuser/nf-winuser-switchtothiswindow?redirectedfrom=MSDN

Ma come è possibile una cosa del genere ???
In pratica, mi sta passando da una "if" al suo "else" ...

Ciao, Mario
Titolo: Re:Problema strano con il debug
Inserito da: DragoRosso - Marzo 07, 2024, 09:36:30 am
Il debugger è relativamente nuovo (è l'FPDebugger, interamente in Pascal) quindi può essere che qualche "anomalia" ci sia.

Hai provato a ricompilare il tutto verificando che nelle opzioni sia settata la compilazione in debugging (a me è capitato che compilando senza debugging, erano rimaste le vecchie "map" e il debugger impazziva).

Hai qualche carattere strano nel sorgente, per cui non collima il sorgente con la linea reale (puoi vederlo con un editor HEX o forse anche con Notepad++) ?

Hai provato con la nuova versione 3.2 ?
Titolo: Re:Problema strano con il debug
Inserito da: nomorelogic - Marzo 07, 2024, 09:47:24 am
se hai modo prova con un altro debugger
ad esempio gdb

vedi se hai lo stesso comportamento
Titolo: Re:Problema strano con il debug
Inserito da: bonmario - Marzo 07, 2024, 10:02:37 am
Ciao,
cerco di rispondere a tutto !!!

- dove si trova "la compilazione in debugging" ? Tieni conto che prima di iniziare a modificare il programma, lancio una mia uty che va a cancellare tutti i files creati dalle compilazioni precedenti (.ppu, .o, .a, ecc), quindi non ci dovrebbe essere niente di sporco
- ho provato a verificare i caratteri strani con notepad++, ma non ho visto niente di strano in quella parte del programma
- ho Lazarus aggiornato alla versione in sviluppo
- gdb ho smesso di usarlo da circa un paio di anni: quando uso il tasto F8, è come se si bloccasse tutto. Mi tocca mettere il breakpoint alla riga successiva e premere F9. Per scrupolo, ho provato ora a vedere se magari era tornato a funzionare, ma mi fa ancora lo stesso scherzo

P.S. Ho fatto una prova, e disabilitando l'istruzione "SetForegroundWindow(Wrk_hwnd);", l'anomalia non capita.
Quindi non vorrei che il problema fosse in quella funzione

Ciao, Mario
Titolo: Re:Problema strano con il debug
Inserito da: DragoRosso - Marzo 07, 2024, 10:14:35 am
P.S. Ho fatto una prova, e disabilitando l'istruzione "SetForegroundWindow(Wrk_hwnd);", l'anomalia non capita.
Quindi non vorrei che il problema fosse in quella funzione
Ciao, Mario

Prova a mettere un "try / except" e vedi se viene generato qualche errore .....
Titolo: Re:Problema strano con il debug
Inserito da: bonmario - Marzo 07, 2024, 11:42:05 am
P.S. Ho fatto una prova, e disabilitando l'istruzione "SetForegroundWindow(Wrk_hwnd);", l'anomalia non capita.
Quindi non vorrei che il problema fosse in quella funzione
Ciao, Mario

Prova a mettere un "try / except" e vedi se viene generato qualche errore .....

Già provato, ma purtroppo non ne da.

Ciao, Mario