Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    debug in C

    Ciao,
    sto scrivendo un client in C, dato che vorrei vedere se sono riuscita a fare bene tutte le connessioni con il socket, volevo fare un debug.
    Il problema è che metto printf() dovunque ma sullo schermo non compare niente.
    Che dovrei fare?
    Usare il preprocessore di C?????????????

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: debug in C

    Originariamente inviato da AMRITA1979
    Il problema è che metto printf() dovunque ma sullo schermo non compare niente.
    Che dovrei fare?
    Mettere fflush(stdout); dopo le printf.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    ho seguito le tue istruzione ma non me le stampa ugualmente
    Perchè??????????

  4. #4
    Posta il codice incriminato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    questo è il main:
    int main(int argc, char *argv[])
    {
    int sockfd;
    struct sockaddr_in name;
    fd_set active_fd_set, write_fd_set;
    int i;
    struct sockaddr_in servername;
    size_t size;
    char command;
    char buffer[MAXMSG];
    char avgstr[8*trhx_sensors];
    long int number;
    struct hostent *h;
    int st, r;
    char n;
    unsigned char d;
    char m, l;
    long timevar;
    /* Open syslog*/
    openlog("trhxd",LOG_PID | LOG_NDELAY,LOG_DAEMON);
    printf("l = %d\n", l);
    /* Create socket */
    sockfd = socket(PF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
    {
    syslog(LOG_ERR,"main: socket() failed");
    exit (1);
    }
    //#ifdef DEBUG
    /*printf("connect = %d\n", connect);
    printf("LOG_PID = %d\n", LOG_PID);
    printf("sockfd = %d\n", sockfd);
    printf("r = %d\n", r);
    printf("tcpport = %d\n", tcpport);
    printf("st = %d\n", st);
    printf("syslog = %d\n", syslog);
    printf("LOG_ERR = %d\n", LOG_ERR);
    printf("servername = %d\n", servername);*/
    //printf("l = %d\n", l);
    //printf("buffer = %d\n", buffer);
    //fflush(stdout);
    //#endif
    /* Initialize address */
    name.sin_family = AF_INET;
    name.sin_port = htons (tcpport);
    /* extabilish connection */
    size = sizeof (servername);
    if(connect(sockfd,(struct sockaddr *)&servername, &size) < 0)
    {
    syslog(LOG_ERR,"main: accept() failed");
    exit (1);
    }
    /* Since the connect call assigns a random address
    * to the local end of this connectionm let's use
    * getsockname to see waht it assigned.
    */
    if (getsockname (sockfd,(struct sockaddr *)&servername, &name) <0)
    {
    syslog(LOG_ERR,"main: connect() failed");
    fprintf(stderr, "%s: unable to read socket address\n", argv[0]);
    exit (1);
    }
    if ((r = read(sockfd, buffer,MAXMSG)) > 0 )
    {
    buffer[r] = 0;
    }
    /* Initialize the set of active sockets. */
    FD_ZERO (&active_fd_set);
    FD_SET (sockfd, &active_fd_set);
    while (1)
    {
    write_fd_set = active_fd_set;
    if (terminator)
    {
    close(sockfd);
    exit(0);
    }
    st=select(FD_SETSIZE, &write_fd_set, NULL, NULL, NULL);
    if (st<0)
    {
    sprintf(buffer,"main: select() failed (error code %d)",errno);
    syslog(LOG_ERR,buffer);
    exit (1);
    }
    else
    {
    /*il client invia i dati a server*/
    if (write_to_server (i, &command, &n, &d)<0)
    {
    close(i);
    FD_CLR (i, &active_fd_set);
    }
    else
    {
    switch(command)
    {
    case '?': /* Help */
    send(sockfd,"?",10,0);
    if(send(sockfd,(struct sockaddr *)&servername,size, 0) !=size)
    {
    sprintf(buffer,"%s%s\r\n");
    }
    read_from_server(i, buffer, strlen(buffer));
    //printf("\n Help\n");
    break;

    case 'l': /* Log line & exit */
    /*send(sockfd,"l",10,0);
    if(send(sockfd,(struct sockaddr *)&servername,size, 0) !=size)
    {
    sprintf(buffer,"%ld %s", time(NULL), avgstr);
    }
    recv(sockfd,(struct sockaddr *)&servername, l,0);*/
    sprintf(buffer,"%ld %s", time(NULL), avgstr);
    read_from_server(i, buffer, strlen(buffer));
    close(i);
    FD_CLR (i, &active_fd_set);
    buffer[0]=0;
    //scanf("%d",avgstr[8*trhx_sensors]);
    break;
    printf("l = %d", l);
    fflush(stdout);
    default:
    sprintf(buffer,"?\r\n");
    break;
    }
    if (st)
    {
    syslog(LOG_NOTICE,"main: serial I/O failed");
    }
    if (buffer[0])
    {
    read_from_server(i, buffer, strlen(buffer));
    }
    }
    }
    }

  6. #6
    Usa il tag [code] quando inserisci codice, altrimenti non si vede l'indentazione (e il C senza indentazione è quasi illeggibile).
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    codice:
    int main(int argc, char *argv[])
    {
    int sockfd;
    struct sockaddr_in name;
    fd_set active_fd_set, write_fd_set;
    int i;
    struct sockaddr_in servername;
    size_t size;
    char command;
    char buffer[MAXMSG];
    char avgstr[8*trhx_sensors];
    long int number;
    struct hostent *h;
    int st, r;
    char n;
    unsigned char d;
    char m, l;
    long timevar;
    /* Open syslog*/
    openlog("trhxd",LOG_PID | LOG_NDELAY,LOG_DAEMON);
    printf("l = %d\n", l);
    /* Create socket */
    sockfd = socket(PF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
    {
    syslog(LOG_ERR,"main: socket() failed");
    exit (1);
    }
    //#ifdef DEBUG
    /*printf("connect = %d\n", connect);
    printf("LOG_PID = %d\n", LOG_PID);
    printf("sockfd = %d\n", sockfd);
    printf("r = %d\n", r);
    printf("tcpport = %d\n", tcpport);
    printf("st = %d\n", st);
    printf("syslog = %d\n", syslog);
    printf("LOG_ERR = %d\n", LOG_ERR);
    printf("servername = %d\n", servername);*/
    //printf("l = %d\n", l);
    //printf("buffer = %d\n", buffer);
    //fflush(stdout);
    //#endif
    /* Initialize address */
    name.sin_family = AF_INET;
    name.sin_port = htons (tcpport);
    /* extabilish connection */
    size = sizeof (servername);
    if(connect(sockfd,(struct sockaddr *)&servername, &size) < 0)
    {
    syslog(LOG_ERR,"main: accept() failed");
    exit (1);
    }
    /* Since the connect call assigns a random address
    * to the local end of this connectionm let's use
    * getsockname to see waht it assigned.
    */
    if (getsockname (sockfd,(struct sockaddr *)&servername, &name) <0)
    {
    syslog(LOG_ERR,"main: connect() failed");
    fprintf(stderr, "%s: unable to read socket address\n", argv[0]);
    exit (1);
    }
    if ((r = read(sockfd, buffer,MAXMSG)) > 0 )
    {
    buffer[r] = 0;
    }
    /* Initialize the set of active sockets. */
    FD_ZERO (&active_fd_set);
    FD_SET (sockfd, &active_fd_set);
    while (1)
    {
    write_fd_set = active_fd_set;
    if (terminator)
    {
    close(sockfd);
    exit(0);
    }
    st=select(FD_SETSIZE, &write_fd_set, NULL, NULL, NULL);
    if (st<0)
    {
    sprintf(buffer,"main: select() failed (error code %d)",errno);
    syslog(LOG_ERR,buffer);
    exit (1);
    }
    else
    {
    /*il client invia i dati a server*/
    if (write_to_server (i, &command, &n, &d)<0)
    {
    close(i);
    FD_CLR (i, &active_fd_set);
    }
    else
    {
    switch(command)
    {
    case '?': /* Help */
    send(sockfd,"?",10,0);
    if(send(sockfd,(struct sockaddr *)&servername,size, 0) !=size)
    {
    sprintf(buffer,"%s%s\r\n");
    }
    read_from_server(i, buffer, strlen(buffer));
    //printf("\n Help\n");
    break;
    
    case 'l': /* Log line & exit */
    /*send(sockfd,"l",10,0);
    if(send(sockfd,(struct sockaddr *)&servername,size, 0) !=size)
    {
    sprintf(buffer,"%ld %s", time(NULL), avgstr);
    }
    recv(sockfd,(struct sockaddr *)&servername, l,0);*/
    sprintf(buffer,"%ld %s", time(NULL), avgstr);
    read_from_server(i, buffer, strlen(buffer));
    close(i);
    FD_CLR (i, &active_fd_set);
    buffer[0]=0;
    //scanf("%d",avgstr[8*trhx_sensors]);
    break;
    printf("l = %d", l);
    fflush(stdout);
    default:
    sprintf(buffer,"?\r\n");
    break;
    }
    if (st)
    {
    syslog(LOG_NOTICE,"main: serial I/O failed");
    }
    if (buffer[0])
    {
    read_from_server(i, buffer, strlen(buffer));
    }
    }
    }
    }

  8. #8
    Utente di HTML.it L'avatar di LexLex
    Registrato dal
    May 2008
    Messaggi
    56
    :quote: :quote: :quote: :quote: :quote: :quote: :quote:

    AHAHHAHHHh AHHHahahHaHA H ahA ha hA hAHhAHhah HaHa HaHahHahHhahhHahAH

    Mi viene da piangere !!
    "Dai Diamanti non nasce niente, dal letame nascono i fiori.. " F.De Andrè

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Originariamente inviato da LexLex
    :quote: :quote: :quote: :quote: :quote: :quote: :quote:

    AHAHHAHHHh AHHHahahHaHA H ahA ha hA hAHhAHhah HaHa HaHahHahHhahhHahAH

    Mi viene da piangere !!

  10. #10
    sei sicura che il socket si apra? Altrimenti il programma ti esce quasi subito.
    Stai sicura che la printf funziona, se non ti stampa vuol dire che il programma non raggiunge quel punto, sposta quindi il printf più a monte.
    In alternativa puoi usare gdb, un ottimo debugger che ti permette di inserire breakpoint e viewponts.
    ciao
    sergio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.