diff options
Diffstat (limited to 'application-devel')
11 files changed, 133 insertions, 133 deletions
diff --git a/application-devel/app-debugging/handout_app-debugging_de.tex b/application-devel/app-debugging/handout_app-debugging_de.tex index b082790..dca0e76 100644 --- a/application-devel/app-debugging/handout_app-debugging_de.tex +++ b/application-devel/app-debugging/handout_app-debugging_de.tex @@ -10,11 +10,11 @@ des zu tracenden Programms wird einfach strace vorangestellt: $ strace /bin/ls execve("/bin/ls", ["/bin/ls"], [/* 50 vars */]) = 0 brk(0) = 0x2246000 -access("/etc/ld.so.nohwcap", F_OK) = +access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f32457fe000 -access("/etc/ld.so.preload", R_OK) = +access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=110532, ...}) = 0 @@ -45,14 +45,14 @@ der für alle gängigen Prozessorarchitekturen verfügbar ist. GDB bietet ein sehr mächtiges Commandlineinterface. Es existieren diverse grafische Frontends für GDB (z.B. DDD). Eine einfache Debuggingsession stellt sich wie folgt dar: \begin{lstlisting}[language=c] - /* hello.c */ - #include <stdio.h> - - int main (void) - { - printf("Hello world\n"); - return 0; - } + /* hello.c */ + #include <stdio.h> + + int main (void) + { + printf("Hello world\n"); + return 0; + } \end{lstlisting} Übersetzen des Programms mit Debuginformationen: \begin{lstlisting} @@ -62,7 +62,7 @@ Starten der Debugsession: \begin{lstlisting} $ gdb ./hello (gdb) run -Starting program: /home/jan/work/examples/hello +Starting program: /home/jan/work/examples/hello Hello world Program exited normally. @@ -71,13 +71,13 @@ Mit dem Kommando ''list'' kann der zugehörige Quellcode angezeigt werden. Breakpoints werden mit ''break'' gesetzt: \begin{lstlisting} (gdb) list -1 #include <stdio.h> -2 -3 int main (void) -4 { -5 printf("Hello world\n"); -6 return 0; -7 } +1 #include <stdio.h> +2 +3 int main (void) +4 { +5 printf("Hello world\n"); +6 return 0; +7 } (gdb) break 5 Breakpoint 1 at 0x400528: file hello.c, line 5. \end{lstlisting} @@ -85,14 +85,14 @@ Mit ''next'' und ''step'' werden einzelne Codezeilen ausgeführt, während ''next'' einem step-OVER und ''step'' einem step-IN entspricht: \begin{lstlisting} (gdb) run -Starting program: /home/jan/work/examples/hello +Starting program: /home/jan/work/examples/hello Breakpoint 1, main () at hello.c:5 -5 printf("Hello world\n"); +5 printf("Hello world\n"); (gdb) next Hello world -6 return 0; -(gdb) continue +6 return 0; +(gdb) continue Continuing. \end{lstlisting} Folgende Tabelle zeigt eine Übersicht der wichtigsten GDB Kommandos:\\ @@ -162,14 +162,14 @@ können hier verwendet werden: \end{center} Folgendes Beispiel verdeutlicht die Analyse eines core-Files: \begin{lstlisting}[language=c] - /* segfault.c */ - #include <stdio.h> - - int main (void) - { - char *arthur_dent = NULL; - printf("%c\n", *arthur_dent); - return 0; + /* segfault.c */ + #include <stdio.h> + + int main (void) + { + char *arthur_dent = NULL; + printf("%c\n", *arthur_dent); + return 0; } \end{lstlisting} Programm übersetzen: @@ -197,7 +197,7 @@ Loaded symbols for /lib64/ld-linux-x86-64.so.2 Core was generated by `./segfault'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000400538 in main () at segfault.c:6 -6 printf("%c\n", *arthur_dent); +6 printf("%c\n", *arthur_dent); (gdb) bt #0 0x0000000000400538 in main () at segfault.c:6 \end{lstlisting} @@ -351,12 +351,12 @@ int main(void) { int *my_array = (int*) malloc(10 * sizeof(int)); int i = 0; - memset(my_array, 0, 10); + memset(my_array, 0, 10); for(i = 0; i < 11; i++) printf("%d ", my_array[i]); - printf("\n"); + printf("\n"); return 0; } \end{lstlisting} @@ -444,7 +444,7 @@ $ valgrind --leak-check=full ./mem_leak =5764= Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info =5764= Command: ./mem_leak -=5764= +=5764= =5764= HEAP SUMMARY: =5764= in use at exit: 49 bytes in 49 blocks =5764= total heap usage: 50 allocs, 1 frees, @@ -453,7 +453,7 @@ $ valgrind --leak-check=full ./mem_leak =5764= loss record 1 of 1 =5764= at 0x4C274A8: malloc (vg_replace_malloc.c:236) =5764= by 0x40058D: main (mem_leak.c:10) -=5764= +=5764= =5764= LEAK SUMMARY: =5764= definitely lost: 49 bytes in 49 blocks [...] diff --git a/application-devel/app-debugging/pres_app-debugging_de.tex b/application-devel/app-debugging/pres_app-debugging_de.tex index 29e0b9e..7b3a4cc 100644 --- a/application-devel/app-debugging/pres_app-debugging_de.tex +++ b/application-devel/app-debugging/pres_app-debugging_de.tex @@ -74,13 +74,13 @@ Program exited normally. \frametitle{Wichtige GDB Kommandos} \begin{verbatim} (gdb) list -1 #include <stdio.h> -2 -3 int main (void) -4 { -5 printf("Hello world\n"); -6 return 0; -7 } +1 #include <stdio.h> +2 +3 int main (void) +4 { +5 printf("Hello world\n"); +6 return 0; +7 } (gdb) break 5 Breakpoint 1 at 0x400528: file hello.c, line 5. \end{verbatim} @@ -93,10 +93,10 @@ Breakpoint 1 at 0x400528: file hello.c, line 5. Starting program: /home/jan/work/examples/hello Breakpoint 1, main () at hello.c:5 -5 printf("Hello world\n"); +5 printf("Hello world\n"); (gdb) next Hello world -6 return 0; +6 return 0; (gdb) continue Continuing. \end{verbatim} @@ -173,8 +173,8 @@ Loaded symbols for /lib64/ld-linux-x86-64.so.2 Core was generated by `./hello_segfault'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000400538 in main () at hello_crash.c:6 -6 printf("Hello segfaulting world %s\n", - *arthur_dent); +6 printf("Hello segfaulting world %s\n", + *arthur_dent); (gdb) bt #0 0x0000000000400538 in main () at hello_crash.c:6 \end{lstlisting} @@ -376,12 +376,12 @@ int main(void) { int *my_array = (int*) malloc(10 * sizeof(int)); int i = 0; - memset(my_array, 0, 10 * sizeof(int)); + memset(my_array, 0, 10 * sizeof(int)); for(i = 0; i < 11; i++) printf("%d ", my_array[i]); - printf("\n"); + printf("\n"); return 0; } \end{lstlisting} diff --git a/application-devel/c++/pres_c++-c++98_11.tex b/application-devel/c++/pres_c++-c++98_11.tex index 93f44eb..6fc449e 100644 --- a/application-devel/c++/pres_c++-c++98_11.tex +++ b/application-devel/c++/pres_c++-c++98_11.tex @@ -11,7 +11,7 @@ \def\lximg{none} %\begin{frame} -% \tableofcontents +%\tableofcontents %\end{frame} \subsubsection{C++98} diff --git a/application-devel/c++/pres_c++-stl.tex b/application-devel/c++/pres_c++-stl.tex index 6bb6fd6..bca5931 100644 --- a/application-devel/c++/pres_c++-stl.tex +++ b/application-devel/c++/pres_c++-stl.tex @@ -11,7 +11,7 @@ \def\lximg{none} %\begin{frame} -% \tableofcontents +%\tableofcontents %\end{frame} \subsubsection{Standard Library Overview} diff --git a/application-devel/c++/pres_c++-threads.tex b/application-devel/c++/pres_c++-threads.tex index a46717a..bbd9c51 100644 --- a/application-devel/c++/pres_c++-threads.tex +++ b/application-devel/c++/pres_c++-threads.tex @@ -11,7 +11,7 @@ \def\lximg{none} %\begin{frame} -% \tableofcontents +%\tableofcontents %\end{frame} \subsubsection{Threading} diff --git a/application-devel/compile-tools/hints_compile-tools_de.tex b/application-devel/compile-tools/hints_compile-tools_de.tex index 80cad60..51f3038 100644 --- a/application-devel/compile-tools/hints_compile-tools_de.tex +++ b/application-devel/compile-tools/hints_compile-tools_de.tex @@ -10,7 +10,7 @@ \begin{itemize} \item Verstehen, was eine Toolchain ist \item Verstehen der Unterschiede zwischen nativem Kompilieren und - Cross-Compilieren + Cross-Compilieren \item Kennenlernen von gcc, make, autotools \end{itemize} diff --git a/application-devel/debugging-tools/pres_debugging-tools_de.tex b/application-devel/debugging-tools/pres_debugging-tools_de.tex index 8e5feac..a49d9ee 100644 --- a/application-devel/debugging-tools/pres_debugging-tools_de.tex +++ b/application-devel/debugging-tools/pres_debugging-tools_de.tex @@ -324,13 +324,13 @@ Program exited normally. \frametitle{Wichtige GDB Kommandos} \begin{verbatim} (gdb) list -1 #include <stdio.h> -2 -3 int main (void) -4 { -5 printf("Hello world\n"); -6 return 0; -7 } +1 #include <stdio.h> +2 +3 int main (void) +4 { +5 printf("Hello world\n"); +6 return 0; +7 } (gdb) break 5 Breakpoint 1 at 0x400528: file hello.c, line 5. \end{verbatim} @@ -343,10 +343,10 @@ Breakpoint 1 at 0x400528: file hello.c, line 5. Starting program: /home/jan/work/examples/hello Breakpoint 1, main () at hello.c:5 -5 printf("Hello world\n"); +5 printf("Hello world\n"); (gdb) next Hello world -6 return 0; +6 return 0; (gdb) continue Continuing. \end{verbatim} @@ -427,8 +427,8 @@ Loaded symbols for /lib64/ld-linux-x86-64.so.2 Core was generated by `./hello_segfault'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000400538 in main () at hello_crash.c:6 -6 printf("Hello segfaulting world %s\n", - *arthur_dent); +6 printf("Hello segfaulting world %s\n", + *arthur_dent); (gdb) bt #0 0x0000000000400538 in main () at hello_crash.c:6 \end{lstlisting} @@ -757,12 +757,12 @@ int main(void) { int *my_array = (int*) malloc(10 * sizeof(int)); int i = 0; - memset(my_array, 0, 10 * sizeof(int)); + memset(my_array, 0, 10 * sizeof(int)); for(i = 0; i < 11; i++) printf("%d ", my_array[i]); - printf("\n"); + printf("\n"); return 0; } \end{lstlisting} @@ -1236,7 +1236,7 @@ Hardware assisted breakpoint 1 at 0x20011c: file main.c, line 68. (gdb) c Continuing. Breakpoint 1, main () at main.c:68 -68 hw_init(); +68 hw_init(); \end{verbatim} \end{frame} @@ -1247,14 +1247,14 @@ Breakpoint 1, main () at main.c:68 (gdb) c Continuing. Breakpoint 1, main () at main.c:68 -68 hw_init(); +68 hw_init(); (gdb) next -83 load_nandflash(IMG_ADDRESS, IMG_SIZE, JUMP_ADDR); +83 load_nandflash(IMG_ADDRESS, IMG_SIZE, JUMP_ADDR); (gdb) next -84 dbg_print(">NANDflash ready\r\n"); +84 dbg_print(">NANDflash ready\r\n"); (gdb) step dbg_print (ptr=0x200e2c ">NANDflash ready\r\n") at driver/debug.c:90 -90 } +90 } \end{verbatim} \end{frame} diff --git a/application-devel/devel-best-practices/hints_devel-best-practices_de.tex b/application-devel/devel-best-practices/hints_devel-best-practices_de.tex index 3f7a48f..298ead4 100644 --- a/application-devel/devel-best-practices/hints_devel-best-practices_de.tex +++ b/application-devel/devel-best-practices/hints_devel-best-practices_de.tex @@ -9,12 +9,12 @@ \subsection*{Lernziele} \begin{itemize} \item Kennenlernen gängiger Techniken (Versionskontrolle, Code-Review, - Test-Skripte) + Test-Skripte) \item Kennenlernen wichtiger Design-Grundsätze \item Kennenlernen gängiger Probleme bezüglich Plattform-Unabhängigkeit - (32/63-Bit, Endianness, Text- statt Binär-Dateien) + (32/63-Bit, Endianness, Text- statt Binär-Dateien) \item Kennenlernen des Unix-Konzepts, Applikationen in mehrere Programme - aufzuteilen. Trennung Commandline-Programme und GUI. + aufzuteilen. Trennung Commandline-Programme und GUI. \end{itemize} \subsection*{Unterrichts-Ablauf} diff --git a/application-devel/devel-environment/handout_devel-environment_de.tex b/application-devel/devel-environment/handout_devel-environment_de.tex index 1ac1b6f..5ffdcd5 100644 --- a/application-devel/devel-environment/handout_devel-environment_de.tex +++ b/application-devel/devel-environment/handout_devel-environment_de.tex @@ -133,12 +133,12 @@ M\"oglichkeit Plugins von so genannten 'update-sites' nach zu installieren. Freie oder kommerzielle Eclipse Plugins gibt es f\"ur viele Aufgaben: \begin{itemize} - \item Versionskontrolle: cvs, git, svn, \dots - \item Programmiersprachen: java, C, C++, Python, \dots - \item Workflows: UML, Modelling, bugzilla, JIRA, Remote Target Management, - \dots - \item Frameworks: QT, CORBA, Eclipse Plugin Development, \dots - \item \dots +\item Versionskontrolle: cvs, git, svn, \dots +\item Programmiersprachen: java, C, C++, Python, \dots +\item Workflows: UML, Modelling, bugzilla, JIRA, Remote Target Management, +\dots +\item Frameworks: QT, CORBA, Eclipse Plugin Development, \dots +\item \dots \end{itemize} Aus einer Zusammenstellung von Plugins entstehen die sogenannten 'Eclipse @@ -147,19 +147,19 @@ erhaeltlich sind. Freie Eclipse basierte IDEs: \begin{itemize} - \item Eclipse IDE for JAVA Developers (http://www.eclipse.org/downloads) - \item Eclipse IDE for C++ Developers (http://www.eclipse.org/downloads) - \item Eclipse Modeling Tools (http://www.eclipse.org/downloads) - \item Pydev for Python Developers (http://pydev.sourceforge.net) +\item Eclipse IDE for JAVA Developers (http://www.eclipse.org/downloads) +\item Eclipse IDE for C++ Developers (http://www.eclipse.org/downloads) +\item Eclipse Modeling Tools (http://www.eclipse.org/downloads) +\item Pydev for Python Developers (http://pydev.sourceforge.net) \end{itemize} Kommerzielle Eclipse basierte IDEs: \begin{itemize} - \item Windriver Workbench (http://www.windriver.com/products/workbench) - \item IBM Rational/Websphere Suites (http://www.ibm.com) - \item Montavista DevRocket - (http://www.mvista.com/product\_detail\_devrocket.php) - \item SAP Netweaver (http://www.sap.com/platform/netweaver/index.epx) +\item Windriver Workbench (http://www.windriver.com/products/workbench) +\item IBM Rational/Websphere Suites (http://www.ibm.com) +\item Montavista DevRocket + (http://www.mvista.com/product\_detail\_devrocket.php) +\item SAP Netweaver (http://www.sap.com/platform/netweaver/index.epx) \end{itemize} Es besteht auch die M\"oglichkeit, sich eine Eclipse IDE selber zusammen zu @@ -170,39 +170,39 @@ Die hier n\"ahers vorgestellte Eclispe basierte IDE wurde von Linutronix speziell f\"ur die embedded Anwendungsentwicklung zusammengestellt und bietet unterst\"utzung in folgenden Punkten: \begin{itemize} - \item Programmiersprachen: - \begin{itemize} - \item C - \item C++ - \item JAVA / Open JDK 1.6 - \end{itemize} - \item Versionskontrolle: - \begin{itemize} - \item Subversion - \item CVS - \item git - \end{itemize} - \item Profiling mit valgrind: - \begin{itemize} - \item memory leak detection - \item heap analyzation - \end{itemize} - \item QT 4.5 Integration - \item Remote Target Managment - \begin{itemize} - \item Target File Explorer - \item Target Process Viewer - \item Remote Debugging - \item Target Monitoring - \end{itemize} - \item ARM Device Emulation - \item Bugzilla Bugtracking Integration - \item Modelierungswerkzeuge - \begin{itemize} - \item UML2 - \item Eclipse Modeling Framework - \item Graphical Modeling Framework - \end{itemize} +\item Programmiersprachen: +\begin{itemize} +\item C +\item C++ +\item JAVA / Open JDK 1.6 +\end{itemize} +\item Versionskontrolle: +\begin{itemize} +\item Subversion +\item CVS +\item git +\end{itemize} +\item Profiling mit valgrind: +\begin{itemize} +\item memory leak detection +\item heap analyzation +\end{itemize} +\item QT 4.5 Integration +\item Remote Target Managment +\begin{itemize} +\item Target File Explorer +\item Target Process Viewer +\item Remote Debugging +\item Target Monitoring +\end{itemize} +\item ARM Device Emulation +\item Bugzilla Bugtracking Integration +\item Modelierungswerkzeuge +\begin{itemize} +\item UML2 +\item Eclipse Modeling Framework +\item Graphical Modeling Framework +\end{itemize} \end{itemize} \paragraph{Bedienoberf\"ache} diff --git a/application-devel/devel-scenarios/pres_devel_scenarios_de.tex b/application-devel/devel-scenarios/pres_devel_scenarios_de.tex index 2033f5b..de01170 100644 --- a/application-devel/devel-scenarios/pres_devel_scenarios_de.tex +++ b/application-devel/devel-scenarios/pres_devel_scenarios_de.tex @@ -10,7 +10,7 @@ \def\lximg{none} \begin{frame} - \tableofcontents +\tableofcontents \end{frame} \subsection{Enwicklungsszenarien} diff --git a/application-devel/posix-ipc/pres_posix_ipc_de.tex b/application-devel/posix-ipc/pres_posix_ipc_de.tex index 9174c17..3c15d8f 100644 --- a/application-devel/posix-ipc/pres_posix_ipc_de.tex +++ b/application-devel/posix-ipc/pres_posix_ipc_de.tex @@ -11,7 +11,7 @@ \def\lximg{none} \begin{frame} - \tableofcontents +\tableofcontents \end{frame} \subsubsection{Message Queues} @@ -308,17 +308,17 @@ int shm_unlink(const char *name); fd = shm_open("my_shm", O_RDWR | O_CREAT, 0777); if (fd < 0) { - perror("Can't open Shared Memory\n"); - goto out; + perror("Can't open Shared Memory\n"); + goto out; } if (ftruncate(fd, 4096) == -1) { - perror("ltrunc\n"); - goto out; + perror("ltrunc\n"); + goto out; } addr = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { - perror("mmap() failed\n"); - goto out; + perror("mmap() failed\n"); + goto out; } ret = 0; *addr = 'A'; @@ -337,14 +337,14 @@ out: fd = shm_open("my_shm", O_RDWR, 0777); if (fd < 0) { - perror("Can't open Shared Memory\n"); - goto out; + perror("Can't open Shared Memory\n"); + goto out; } addr = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { - perror("mmap() failed\n"); - goto out; + perror("mmap() failed\n"); + goto out; } printf("Reading from SHM -> %c\n", *addr); ret = 0; |
