Crash applicazione

venerdì 04 giugno 2004 - 10.00

homer Profilo | Newbie

Ho sviluppato un'applicazione che gira su di un server (in vb.net).Questa applicazione viene utilizzata da palmari che si collegano con protocollo vt220 (ogni tasto premuto sul palmare è come se fosse premuto sulla tastiera del pc) lanciando un'istanza del programma.
Di tanto in tanto capita che il programma si chiuda inaspettatamente, ho inserito la una classe per fare il trace di cio che accade e gestisco le eccezioni, ma sul file di log non trovo mai errori, il programma semplicemente si chiude.
Qualcuno mi può indicare se si tratta di un problema di gestione della memoria o cosa posso fare per individuare il problema?
Grazie.
Alessandro.

trinity Profilo | Guru

Ciao Homer,
probabilmente non è un problema di gestione memoria perchè ti avrebbe detto sicuramente ti sarebbe uscito un messaggio di errore.
secondo me dovresti fare una prova con il compilatore eseguire il debug passo passo e vedere dove si genera l'errore.
Fai questa prova e poi fammi sapere.

Ciao
Fabio

homer Profilo | Newbie

Il problema è che quando l'applicazione viene lanciata da un palmare non ho la possibilità di fare il debug da pc passa passo (in vt220 ho solo una interfaccia testo e dal palmare posso solo lanciare l'applicazione .exe che è una consol application).
Proverò a replicare la situazione da pc.
Indagando sui miei file di log ho notato che il programma si chiude (ma non sistematicamente solo di tanto in tanto) dopo che io faccio la chiamata ad una dll in c++ (non riuscivo a fare le stesse operazioni in vb.net) che fa operazioni come la pulizia dello schermo e la scrittura e lettura di caratteri sulla videata dos), in tale classe non ho messo alcun metodo finalaze o dispose: può essere un problema?
Per ora ringrazio trinity, mi rendo conto che spigati così questi problemi non sia facile intervenire.

di seguito il codice della dll:
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

using namespace System;

namespace Screen
{
public __gc class ScreenFunc
{
// TODO: Add your methods for this class here.
public:

void ClearScreen(void)
{
system("cls");
}

int ReadChar( void )
{
int ch;

ch = _getche();

return(ch);

}

void PutChar(int AsciCode)
{
_putch(AsciCode);
}
};
}


Homer.

BELENOS Profilo | Junior Member

Homer l'hai poi risolto questo problema dell'applicativo su palmare?? Anch'io sto facendo un'applicazione che tramite wireless si collega ad un applicativo che gira su palmare per scambio dati ed è da un pò che mi dibatto con questo problema...i 2 applicativi sono scritti in visual c++ e mi sono accorto che ad intervalli quasi regolari di circa 13 min. l'applicativo su palmare crasha e si chiude non restituendomi nessun messaggio di errore...ho provato a generarmi anche un file di log, e praticamente ho visto che l'applicazione si chiude sempre all'incirca nella esecuzione certe operazioni, ma questo solo dopo 13 min...prima va tutto liscio...non riesco a capire il xkè...

NOI SIAMO I BORG!!!
LA RESISTENZA E' INUTILE!!!

homer Profilo | Newbie

Mi sembra di ricordare che nel mio caso fosse il programma che gestiva la connessione in vt220 a creare problemi (SLclient), ho avuto modo poi di utilizzare palmari della psion e ho avuto problemi di disconnessione per colpa di timeout impostati sul palmare che si scollegava dopo qualche minuto.Non credo sia il tuo caso.Con quest'ultimo palmare con la connessione usb e active sync sono riuscito a fare un debug passo passo e questo potrebbe aiutarti nella verifica del problema.

Alessandro

BELENOS Profilo | Junior Member

grazie...spero di poter far qualcosa per potermi debuggare la brutta bestia...

NOI SIAMO I BORG!!!
LA RESISTENZA E' INUTILE!!!

BELENOS Profilo | Junior Member

Allora...vi aggiorno sulla situazione...se qualche buon'anima volesse darmi un aiuto....grazie in anticipo...

Linguaggio dell'applicativo su palmare: Microsoft Embedded Visual C++ 4.0
Sistema Operativo del palmare: Win CE

Linguaggio dell'applicativo su PC fisso: Microsoft Visual C++ 6.0
Sistema Operativo del PC fisso: Windows XP SP2

Buongiorno...vi espongo un problema...non so se così esposto in maniera generale sia sufficiente per voi per darmi qualche dritta...cmq ci provo...
Io ho un applicativo che gira su un palmare e si connette ad un pc fisso attraverso un driver che utilizza messaggi inviati e ricevuti via wireless per spedire o ricevere informazioni...ad un certo punto il driver sul pc fisso crasha dando un bellissimo messaggio di "La memoria non poteva essere read " al tal indirizzo...ho provato a guardare sui dettagli e ho visto che l'errore viene dato soprattutto nella libreria mfc42.dll, e a volte (anche se di rado) in una libreria realizzata dai tipi che in origine avevano realizzato questo applicativo (e che poi io e altri abbiamo modificato per "tappare" alcuni buchi)...qualcuno di voi sa di cosa si occupa questa libreria e perchè un applicativo di questo genere mi potrebbe dare questo errore????

Successivamente mi sono creato un file di log che mi indica quali funzioni della libreria dei socket vengono richiamate durante la durata dell'applicativo su pc fisso, per permettermi di vedere se sono solo certe funzioni della libreria che danno problemi (come io penso)...ad ogni chiamata a funzione mi apro il file di log(coi dovuti test del caso), mi scrivo sopra che funzione viene richiamata e poi lo chiudo...mi sono accorto che dà errore anche nella MSVCRTD.DLL...Non mi riesce comunque di vedere dove crasha perchè se io abilito la scrittura su un file di log delle funzioni del protocollo di comunicazione richiamate, allora sembra non crashare +...se invece faccio andare la versione senza la scrittura su questo file, allora dopo un pò crasha...e non riesco a vedere dove...proverò con una _ASSERTE al limite...per vedere se in certi intervalli di tempo ci sono dei puntatori che puntano a NULL....non so + che inventarmi!!!

Forse è dovuto questo fatto al fatto che se abilito la scrittura sul file, rallento qualche cosa durante l'esecuzione dell'applicativo e lo stesso in questo caso non incontra errore nell'allocare qualche zona di memoria che altrimenti in certi intervalli di tempo sarebbe deallocata e quindi inutilizzabile??

O è dell'altro???Francamente non so + che pensare...



NOI SIAMO I BORG!!!
LA RESISTENZA E' INUTILE!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5