Howto: Oscam debug: Unterschied zwischen den Versionen

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 308: Zeile 308:
<br>  
<br>  


!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!&nbsp;!!!WICHTIG!!!
!!!WICHTIG!!!
 
Jetzt erwartet "gdb" eine Eingabe damit der Backtrace angezeigt wird das sollten wir auch machen damit es in die gdb.txt Log-Datei geschrieben wird  
Jetzt erwartet "gdb" eine Eingabe damit der Backtrace angezeigt wird das sollten wir auch machen damit es in die gdb.txt Log-Datei geschrieben wird  



Version vom 12. April 2011, 09:51 Uhr

Die Anleitung basiert auf folgendem System :

1. System

Hardware: Alix 3D2 x86
OS:Ubuntu 10.10 / 2.6.35-24-generic


2. Benötigte Pakete mit apt-get installieren

apt-get update
apt-get install -y htop automake make cmake cmake-curses-gui subversion libusb-dev libssl-dev libssh-dev gdb dialog g++ gcc

3. Zusätzlich sollte man mindestens die libusb-1.0.6 wie folgt installieren : (Hier wird die libusb-1.0.8 installiert)

cd /tmp
wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.8/libusb-1.0.8.tar.bz2/download
tar xjf libusb-1.0.8.tar.bz2
cd libusb-1.0.8
./configure
make
make install


4. Die Konfigurationsdateien von OScam sind hier abgelegt (Falls bei euch wo anderst, dann im run Script den Pfad anpassen)

/var/etc


5. In der oscam.config sollte folgendes vorhanden sein

logfile                       = /var/log/oscam.log
disablelog                    = 0


6. Wenn man als User ohne Admin Rechte die Scripte ausführt bekommt man mit dem Eintrag "ulimit -n 4096" eine Fehlermeldung. --> ulimit: open files: Kann die Grenze nicht ändern: Die Operation ist nicht erlaubt

Deshalb verwende ich unter Punkt 4.0 den root als User!

1.0 Einen User anlegen

Mit dem Programm Putty (für Windows) als root zum Server verbinden, folgendes eingeben und dann die Abfragen durchführen:

adduser oscam_doctor

dannach mit

logout

die Verbindung beenden.

2.0 OScam files herunterladen

Mit dem Programm Putty (für Windows) als oscam_doctor zum Server verbinden. Jetzt sind wir im Home-Verzeichnis des Users oscam_doctor, Kontrolle mit

pwd

Falls ihr nachschauen möchtet ob eine OScam gerade läuft dann könnt ihr das mit htop prüfen und ggf. killen

htop

2.1 Wenn ihr die letzte Version auschecken wollt dann folgendes eingeben

svn co http://streamboard.gmc.to/svn/oscam/trunk oscam-svn


2.2 Wenn ihr eine bestimmte Version auschecken wollt dann folgendes eingeben und xxxx mit der gewünschten Versionsnummer ändern

svn co http://streamboard.gmc.to/svn/oscam/trunk oscam-svn -r xxxx

2.3 Wenn ihr nur bestimmte Module (Add-Ons/Protocols/Reader) in der OScam haben möchtet, dann folgendes eingeben (Zu mindestens sollte unter "Add-ons" Debug messages und Log History gewählt werden)

cd oscam-svn
./config.sh

und es öffnet sich folgendes Dialogfenster

[externes Bild: http://s1.directupload.net/images/110405/h8djzon5.jpg]
[externes Bild: http://s7.directupload.net/images/110405/adla74vp.jpg]
[externes Bild: http://s1.directupload.net/images/110405/lupxjikc.jpg]
[externes Bild: http://s7.directupload.net/images/110405/bqrt9qcc.jpg]

Anleitung: Mit der Enter Taste könnt ihr in die Hauptmodule und mit Leertaste wählt man die Module aus. Zum Schluß auf "Save" und dann mit "Enter" bestätigen nicht vergessen !


3.0 Scripte erstellen PS: Wir sind im /home/oscam_doctor/oscam-svn/build Verzeichnis !

Folgendes eingeben

mkdir build
cd build

Dann im Ordner drei Dateien mit z.B. vi erstellen

3.2.0 Ohne cmake im Scrpit

3.2.1

vi gdb-start

3.2.2 Hier nur i eingeben nicht ENTER drücken !

i

3.2.3 Dann das hier kopieren und in den Putty-Fenster mit der Rechten-Maustaste reinklicken

#/bin/sh
ulimit -n 4096
killall -9 oscam
echo "oscam killed"
sleep 1
gdb -ex "set logging on" -ex "show logging" oscam -x run
echo "oscam exit debug"


3.2.4 Dann einmal die ESC Taste drücken und

3.2.5 Folgendes eingeben

:wq

und ENTER drücken

3.2.6 Dann die Rechte ändern mit

chmod 755 gdb-start

3.2.7 Fertig

3.1.0 Mit cmake im Script

3.1.1

vi gdb-cmake-start

3.1.2 Hier nur i eingeben nicht ENTER drücken !

i

3.1.3 Dann das hier kopieren und in den Putty-Fenster mit der Rechten-Maustaste reinklicken

#/bin/sh
ulimit -n 4096
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
killall -9 oscam
echo "oscam killed"
sleep 1
gdb -ex "set logging on" -ex "show logging" oscam -x run
echo "oscam exit debug"

3.1.4 Dann einmal die ESC Taste drücken und

3.1.5 Folgendes eingeben

:wq

und ENTER drücken

3.1.6 Dann die Rechte ändern mit

chmod 755 gdb-cmake-start

3.1.7 Fertig

3.3.0 Script für Konfigurationspfad erstellen

3.3.1

vi run

3.3.2 Hier nur i eingeben nicht ENTER drücken !

i

3.3.3 Dann das hier kopieren und in den Putty-Fenster mit der Rechten-Maustaste reinklicken

run -d1 -r0 -c/var/etc/

3.3.4 Dann einmal die ESC Taste drücken und

3.3.5 Folgendes eingeben

:wq

und ENTER drücken

3.3.6 Dann die Rechte ändern mit

chmod 755 run

3.3.7 Anschließend melden wir uns vom Server ab

logout

4.0.0 OScam mit Hilfe der Scripte im Debug-Modus starten

Mit dem Programm Putty (für Windows) als root zum Server verbinden. Dann geben wir folgendes ein

cd /home/oscam_doctor/oscam-svn/build

4.1.0 Beim ersten Start verwenden wir den gdb-cmake-start Script damit wird die OScam Binary zum ersten Mal kompiliert!

./gdb-cmake-start

Dann solltet ihr folgendes in der Ausgabe sehen

.
.
.
.
[ 97%] Built target cscrypt
Scanning dependencies of target svnversion
[ 97%] Built target svnversion
Scanning dependencies of target oscam
[ 98%] Building C object CMakeFiles/oscam.dir/oscam.o
Linking C executable oscam
[ 98%] Built target oscam
Scanning dependencies of target list_smargo
[100%] Building C object utils/CMakeFiles/list_smargo.dir/list_smargo.o
Linking C executable list_smargo
[100%] Built target list_smargo
oscam: Kein Prozess gefunden
oscam killed
GNU gdb (GDB) 7.2-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/oscam_doctor/oscam-svn/build/oscam...done.
Copying output to gdb.txt.
Currently logging to "gdb.txt".
Logs will be appended to the log file.
Output will be logged and displayed.
[Thread debugging using libthread_db enabled]
[New Thread 0xb7ff5280 (LWP 2755)]
[New Thread 0xb7fee280 (LWP 2756)]
[New Thread 0xb7fe7280 (LWP 2757)]
[New Thread 0xb7fe0b70 (LWP 2758)]
[New Thread 0xb77dfb70 (LWP 2759)]
[New Thread 0xb6fdeb70 (LWP 2760)]
[New Thread 0xb67ddb70 (LWP 2761)]
[New Thread 0xb5fdcb70 (LWP 2762)]

4.2.0 Falls ihr die OScam Binary schon habt, dann könnt ihr den gdb-start Script verwenden

./gdb-start

Dann solltet ihr folgendes in der Ausgabe sehen

root@Alix:/home/oscam_doctor/oscam-svn/build# ./gdb-start
oscam: Kein Prozess gefunden
oscam killed
GNU gdb (GDB) 7.2-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/oscam_doctor/oscam-svn/build/oscam...done.
Copying output to gdb.txt.
Currently logging to "gdb.txt".
Logs will be appended to the log file.
Output will be logged and displayed.
[Thread debugging using libthread_db enabled]
[New Thread 0xb7ff5280 (LWP 2772)]
[New Thread 0xb7fee280 (LWP 2773)]
[New Thread 0xb7fe7280 (LWP 2774)]
[New Thread 0xb7fe0b70 (LWP 2775)]
[New Thread 0xb77dfb70 (LWP 2776)]
[New Thread 0xb6fdeb70 (LWP 2777)]
[New Thread 0xb67ddb70 (LWP 2778)]
[New Thread 0xb5fdcb70 (LWP 2779)]

5.0.0 Das Wichtigste an der ganzen Sache

Mit beiden Scripten werden die Log Dateien für gdb automatisch erstellt --> /home/oscam_doctor/oscam-svn/build/gdb.txt

Wenn nun OScam abstürzen sollte würde man als Ausgabe im Putty folgendes sehen

Reading symbols from /home/proto/oscam-svn/build/oscam...done.
Copying output to gdb.txt.
Currently logging to "gdb.txt".
Logs will be appended to the log file.
Output will be logged and displayed.
[Thread debugging using libthread_db enabled]
[New Thread 0xb7ff5280 (LWP 2804)]
[New Thread 0xb7fee280 (LWP 2805)]
[New Thread 0xb7fe7280 (LWP 2806)]
[New Thread 0xb7fe0b70 (LWP 2807)]
[New Thread 0xb77dfb70 (LWP 2808)]
[New Thread 0xb6fdeb70 (LWP 2809)]
[New Thread 0xb67ddb70 (LWP 2810)]
[New Thread 0xb5fdcb70 (LWP 2811)]
Program received signal SIGSEGV, Segmentation fault. 
[Switching to Thread 0xb7b602a0 (LWP 16480)]
0x080a4f59 in cc_available (rdr=0x0, checktype=0) at module-cccam.c:3897
3897 struct s_client *cl = rdr->client; (gdb) 


!!!WICHTIG!!! Jetzt erwartet "gdb" eine Eingabe damit der Backtrace angezeigt wird das sollten wir auch machen damit es in die gdb.txt Log-Datei geschrieben wird


Also geben wir einfach folgendes ein

bt

Und bekommen dann den Backtrace angezeigt

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb7b602a0 (LWP 16480)]
0x080a4f59 in cc_available (rdr=0x0, checktype=0) at module-cccam.c:3897
3897 struct s_client *cl = rdr->client;
(gdb) bt
#0 0x080a4f59 in cc_available (rdr=0x0, checktype=0) at module-cccam.c:3897
#1 0x080b0afc in matching_reader (er=0x8296da8, rdr=0x815cbbcool at oscam-chk.c:409
#2 0x080527c1 in get_cw (client=0xb7a23628, er=0x8296dacool at oscam.c:2491
#3 0x0809f228 in cc_parse_msg (cl=0xb7a23628, buf=0x82a33a0 "k\001", l=164) at module-cccam.c:2124
#4 0x080a057e in cc_recv (cl=0xb7a23628,
buf=0xb7b5f210 "PARTNER: OSCam v1.00-unstable_svn, build #4581 (i686-pc-linux-debug) [EXT,SID]", l=1024)
at module-cccam.c:2533
#5 0x08053df7 in process_input (
buf=0xb7b5f210 "PARTNER: OSCam v1.00-unstable_svn, build #4581 (i686-pc-linux-debug) [EXT,SID]", l=1024, timeout=10)
at oscam.c:2844
#6 0x080a3994 in cc_srv_connect (cl=0xb7a2362cool at module-cccam.c:3514
#7 0x080a3cf4 in cc_srv_init (cl=0xb7a2362cool at module-cccam.c:3583
#8 0xb7dd71b5 in start_thread () from /lib/libpthread.so.0
#9 0xb7d4662e in clone () from /lib/libc.so.6
(gdb)


Und jetzt erst wird die Ausgabe in die gdb.txt geschrieben!

Quellenangabe: Streamboard