Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Περί debug messages

0 views
Skip to first unread message

George Notaras

unread,
Jan 29, 2009, 7:06:41 AM1/29/09
to linux-greek-users
Τα debug messages πρέπει να στέλνονται στο stdout ή στο stderr? Υπάρχει
κάποιο στανταρ? Το λογικό μου φαίνεται να πάνε στο stdout, καθώς δεν
πρόκειται για λάθη ή για προειδοποιήσεις, αλλά για αναλυτικές
πληροφορίες σχετικές με την εκτέλεση ενός προγράμματος. Αλλά πάλι, από
την άλλη, τι δουλειά έχουν τα debug messages στο stdout?

Σκεφτόμουν να γράψω ένα logger module για να χρησιμοποιώ σε διάφορα
scripts και προέκυψε αυτό το ερώτημα. Έχει τύχει να δω debug messages
και στο stdout και στο stderr σε διάφορα προγράμματα.

Ευχαριστώ


Christos Ricudis

unread,
Jan 29, 2009, 7:40:19 AM1/29/09
to gn...@g-loaded.eu, linux-greek-users
O basikos kanonas einai "sto stderr stelnoume output pou 8eloume na
mporei na dei o xrhsths akoma ki otan exei kanei redirect to stdout allou".

Gia ena paradeigma :

tar -cvf - directory | gzip > koko.gz

To tres spastique einai oti sto agaphmeno mas shell to stderr arneitai
peismatika thn pipa, opote einai dyskolo na to peraseis me kapoio
profanh tropo apo enan pager xwris na xrhsimopoihseis ena endiameso
arxeio (h named pipes kai 2 processes ktl ktl).


Giorgos Keramidas

unread,
Jan 29, 2009, 8:12:06 AM1/29/09
to Christos Ricudis, linux-greek-users, gn...@g-loaded.eu
Ή dup() σε shell syntax σε ένα temporary file descriptor:

$ ( echo foo ; echo lala >&2 ) > /dev/null
lala

$ ( ( echo foo ; echo lala >&2 ) 3<&1 1<&2 2<&3 ) > /dev/null
foo

Και στις δύο φορές το stdout πάει στο /dev/null. Απλά τη δεύτερη έχει
γίνει `swap' το stdout με το stderr.

Αφήνεται ως άσκηση στη λίστα το πως μπορείς να δεις το stderr σε less,
αλλά να στείλεις το stdout σε αρχείο...

Michael Iatrou

unread,
Jan 29, 2009, 8:24:35 AM1/29/09
to gn...@g-loaded.eu, linux-gr...@lists.hellug.gr
When the date was Thursday 29 January 2009, George Notaras wrote:

> Τα debug messages πρέπει να στέλνονται στο stdout ή στο stderr? Υπάρχει
> κάποιο στανταρ?

stderr ώστε να υπάρχει συνέπεια στο stdout, ανεξάρτητα από τα build/run time
options του app.

π.χ.

$ app 2> error.log

--
Μιχάλης Ιατρού (olrt)

George Notaras

unread,
Jan 29, 2009, 8:30:35 AM1/29/09
to Christos Ricudis, linux-greek-users
Christos Ricudis wrote:
> George Notaras wrote:
>> Τα debug messages πρέπει να στέλνονται στο stdout ή στο stderr? Υπάρχει
>> κάποιο στανταρ? Το λογικό μου φαίνεται να πάνε στο stdout, καθώς δεν

> O basikos kanonas einai "sto stderr stelnoume output pou 8eloume na


> mporei na dei o xrhsths akoma ki otan exei kanei redirect to stdout allou".

Χρήσιμος κανόνας. Ακόμα δεν μπορώ να καταλήξω όμως αν τα debug messages
ανήκουν στο "output που πρέπει να δει ο χρήστης οπωσδήποτε". Λογικά όμως
εκεί πρέπει να ανήκουν. Εφόσον ενεργοποιήθηκε το debug mode, πιθανότατα
σημαίνει ότι ο χρήστης θέλει να δει οπωσδήποτε τα μηνύματα.

> Gia ena paradeigma :
>
> tar -cvf - directory | gzip > koko.gz
>

Τώρα βάζεις μια νέα παράμετρο: ότι αναγκαστικά θα πρέπει να σταλούν τα
debug messages στο stderr για να μην μπερδευτούν με το stdout, το οποίο
είναι binary data. Οπότε, εκτός από τον παραπάνω κανόνα, υπάρχουν και
αναγκαστικές εξαιρέσεις.

> To tres spastique einai oti sto agaphmeno mas shell to stderr arneitai
> peismatika thn pipa, opote einai dyskolo na to peraseis me kapoio
> profanh tropo apo enan pager xwris na xrhsimopoihseis ena endiameso
> arxeio (h named pipes kai 2 processes ktl ktl).

Δεν ήξερα ότι το stderr αρνείται με τέτοιο σθένος την πίπα! Αυτό εξηγεί
διάφορα περίεργα πράγματα που με προβλημάτιζαν κατά καιρούς σχετικά με
το output κάποιων προγραμμάτων όταν χρησιμοποιούσα pipes.

George Notaras

unread,
Jan 29, 2009, 8:38:48 AM1/29/09
to Christos Ricudis, linux-greek-users
Christos Ricudis wrote:

> Gia ena paradeigma :
>
> tar -cvf - directory | gzip > koko.gz
>

Μάλλον δεν το έθεσα σωστα πριν. Δεν πρόκειται για εξαιρέσεις, αλλά για
περιπτώσεις, όπου, ανεξάρτητα με την ύπαρξη κανόνα ή όχι, τα debug
messages *πρέπει* να πανε στο stderr.

George Notaras

unread,
Jan 29, 2009, 9:19:27 AM1/29/09
to linux-greek-users
George Notaras wrote:
> Τα debug messages πρέπει να στέλνονται στο stdout ή στο stderr? Υπάρχει
> κάποιο στανταρ?


Ευχαριστώ όλους :)

0 new messages