Problema stringhe "Impossibile trovare o aprire il file PDB." (C)

di Anonimizzato24121 il
14 risposte
Salve, non ho idea del perchè ma quando (in linguaggio C e con Visual Studio) scrivo un qualsiasi codice che ha a che fare con le stringe ad un certo punto il programma crasha e visualizza una serie di errori del genere:

'Ciao, come ti chiami.exe' (Win32): caricamento di 'C:\Users\utente\Source\Repos\Ciao, come ti chiami\Debug\Ciao, come ti chiami.exe' completato. Simboli caricati.
'Ciao, come ti chiami.exe' (Win32): caricamento di 'C:\Windows\SysWOW64\ntdll.dll' completato. Impossibile trovare o aprire il file PDB.
'Ciao, come ti chiami.exe' (Win32): caricamento di 'C:\Windows\SysWOW64\kernel32.dll' completato. Impossibile trovare o aprire il file PDB.
'Ciao, come ti chiami.exe' (Win32): caricamento di 'C:\Windows\SysWOW64\KernelBase.dll' completato. Impossibile trovare o aprire il file PDB.
'Ciao, come ti chiami.exe' (Win32): caricamento di 'C:\Windows\SysWOW64\vcruntime140d.dll' completato. Impossibile trovare o aprire il file PDB.
'Ciao, come ti chiami.exe' (Win32): caricamento di 'C:\Windows\SysWOW64\ucrtbased.dll' completato. Impossibile trovare o aprire il file PDB.
Eccezione generata in corrispondenza di 0x0F90D3EC (ucrtbased.dll) in Ciao, come ti chiami.exe: 0xC0000005: violazione di accesso durante la scrittura del percorso 0x00FD0000.

non può essere un problema di codice perchè, per assicurarmi che non fossi io a scrivere errori, ho copiato, senza cambiarli di una virgola, alcuni codici già funzionanti presi da internet e persino da qualche libro di informatica. L'errore persiste. Sapete come aiutarmi?

14 Risposte

  • Per i simboli è normale.
    per il programma posta il sorgente
  • L'eccezione indica che hai usato male un puntatore. Il resto non è importante.

    Nel sorgente ci sarà un errore con l'uso delle stringhe.
  • Non ho capito bene, serve che vi posti il codice?
  • Sempre
  • Per esempio:
    #include <stdio.h>
    #include "stdafx.h"
    #include <string.h>
    
    int main()
    {
    	char yourname[100];
    	int yourage;
    
    	printf("Whats your name?\t");
    	scanf_s("%s", yourname); 
    	printf("How old are you?\t");
    	scanf_s("%d", &yourage);
    	printf("You are %d years old and your name is %s \n\n\n", yourage, yourname);
    	
    	return(0);
    }
  • Mi pare di averti già detto che per le stringhe con la scanf_s devi indicare il massimo numero di caratteri

    scanf_s("%s", yourname, 100);
  • oregon ha scritto:


    Mi pare di averti già detto che per le stringhe con la scanf_s devi indicare il massimo numero di caratteri

    scanf_s("%s", yourname, 100);
    ma non funziona comunque, questo è un codice preso da internet ed avevo già provato a modificarlo come dici tu, ma il problema persiste
  • No, te l'ho già detto nell'altro thread (dove non hai più risposto). Hai provato? Cosa succede? Io HO provato e funziona tutto regolarmente con la modifica che ti ho detto.
  • Bho, ora ho riprovato il tuo metodo in diversi codici ed ha funzionato, ma prima mi sembrava di aver fatto la stessa cosa e crashava...
  • oregon ha scritto:


    Mi pare di averti già detto che per le stringhe con la scanf_s devi indicare il massimo numero di caratteri

    scanf_s("%s", yourname, 100);
    Comunque perchè questa cosa (che evidentemente funziona) non si trova nei codici online o nei libri? E' un aggiunta recente o cosa?
  • È una cosa abbastanza complicata.
    nasce come estensione specifica microsoft con i buffer overflow.
    poi è stata "inglobata", in termini più ampi, nelle varie versioni "avanzate" di C.
  • Ciao, anche a me risulta la stessa eccezione, non riesco a capire quale sia il mio problema di puntatori, posto la porzione di codice in oggetto(all'interno di un sottoprogramma), non so se sia sufficiente o meno:
    
    typedef struct conf {
    	char *stringaConf;
    	int posizione;
    	int numeroTransizioni;
    	struct conf *next;
    }configurazione;
    
    
    configurazione *nuovo;
    
    nuovo = NULL;
    if (nuovo = (configurazione*)malloc(sizeof(configurazione))) {
    			nuovo->numeroTransizioni = input.numeroTransizioniPossibili;
    			nuovo->posizione = pos;
    			nuovo->stringaConf = NULL;
    			if (nuovo->stringaConf = (char*)malloc((maxPassi + 11) * sizeof(char)))
    				strcpy(nuovo->stringaConf, stringaProva);
    			nuovo->next = NULL;
    
    
    in corrispondenza dell'instruzione nuovo->next = NULL; mi esce "Eccezione generata in corrispondenza di 0x00007FFF9B859E7A (ucrtbased.dll) in Project1.exe: 0xC0000005: violazione di accesso durante la lettura del percorso 0x0000000000000000."

    Grazie mille.
  • Non si posta nel thread di un altro utente. Anche se l'eccezione è la stessa non si può discutere di tutti i problemi di puntatori qui.

    Crea un nuovo thread e indica esattamente il valore di

    maxPassi

    e il contenuto di

    stringaProva
Devi accedere o registrarti per scrivere nel forum
14 risposte