Howto: Oscam debug

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

Das Board mit Freiheiten




Die Anleitung basiert auf folgendem System :

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

libusb installieren

  • 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

Die Konfigurationsdateien von OScam sind hier abgelegt (ggfs im run Script den Pfad anpassen)

/var/etc

In der oscam.config sollte folgendes vorhanden sein

logfile = /var/log/oscam.log

disablelog = 0

Fehlermeldung. --> ulimit: open files:

  • 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 verwenden wir unter Punkt 4.0 den root als User!

  • 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.
  • 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

  • auschecken
  • Bestimmte Revision auschecken

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

  • Module auswählen

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

  • 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 !

  • 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
  • Ohne cmake im Scrpit

vi gdb-start

  • Hier nur i eingeben nicht ENTER drücken !

i

  • Dann das hier kopieren und in den Putty-Fenster mit der Rechten-Maustaste reinklicken
  1. /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"

  • Dann einmal die ESC Taste drücken und
  • Folgendes eingeben
wq

und ENTER drücken

  • Dann die Rechte ändern mit

chmod 755 gdb-start

  • Fertig
  • Mit cmake im Script

vi gdb-cmake-start

  • Hier nur i eingeben nicht ENTER drücken !

i

  • Dann das hier kopieren und in den Putty-Fenster mit der Rechten-Maustaste reinklicken
  1. /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"

  • Dann einmal die ESC Taste drücken und
  • Folgendes eingeben
:wq

und ENTER drücken

  • Dann die Rechte ändern mit
chmod 755 gdb-cmake-start
  • Fertig
  • Script für Konfigurationspfad erstellen
vi run
  • Hier nur i eingeben nicht ENTER drücken !
i
  • Dann das hier kopieren und in den Putty-Fenster mit der Rechten-Maustaste reinklicken
run -d1 -r0 -c/var/etc/
  • Dann einmal die ESC Taste drücken und
  • Folgendes eingeben
:wq

und ENTER drücken

  • Dann die Rechte ändern mit
chmod 755 run
  • Anschließend melden wir uns vom Server ab
logout
  • 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
  • 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)]
  • 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)]
  • 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)
  1. Und jetzt erst wird die Ausgabe in die gdb.txt geschrieben!

Quellenangabe: Streamboard


[ Zurück zu Hauptseite ]