Training on Linux & C Debugging Techniques

Title
SF006 – Linux & C Debugging Techniques

Course Overview

Most of the software bugs center around memory leaks which invariably results in segmentation violation followed by a core dump. Linux and C debugging course gives an in-depth coverage on various programming errors, a detailed address level breakup of memory map of a process, ways to debug the program as well as core dump analysis. The participant will learn to detect and debug different type of issues in the code with or without gdb debugger. Participant will also get a sound understanding of C development environment along with reading assembly and binary files and stack frames creation.

Course Highlight

  • Course will be delivered by our Founder/Director who is an Expert with 16+ years of experience in Linux Kernel and SAN software development.
  • The course flow will be an assignment driven model so that participants can have a hands-on experience of various debugging techniques.
  • Participants will be writing, reviewing and debugging lots of C programs dealing with segmentation violation, stack overflow, heap overflow, arithmetic overflow, illegal code execution, stack issue, endian-ness issue, c library assertion, data type mismatches, etc.

Course Delivery

  • Lectures, Classroom Discussions and Lab Exercises
  • 30% Theory, 70% Lab
  • Location: Bangalore, India

Sample Lab Assignment – Linux & C Debugging

Run the C code mentioned below in your computer (preferably Linux ubuntu / redhat / fedora / centos / debian / suse, etc…). Your computer will seem to hang after 5 to 10 minutes of running this code or maybe the program will crash. So, debug the following C-code under Linux platform & identify 10 Issues with this code.

  1. /*
  2.  * Sanfoundry.com Memory Leak Program
  3.  * Author: Manish Kumar Bhojasia, Location: Bangalore, India
  4.  */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. #define KB1     1024
  11. #define MEMSIZE (4 * KB1)
  12.  
  13. char *string = "IDENTIFY 10 ISSUES IN THIS MEMLEAK PROGRAM";
  14. char *gstring = "IDENTIFY 10 ISSUES IN THIS MEMLEAK PROGRAM";
  15. char *gptr;
  16. int num;
  17.  
  18. char * f1_alloc(void);
  19. char * f2_copyme(void);
  20. void   f3_free(char *);
  21.  
  22. main()
  23. {
  24.     srand((int)getpid());
  25.     while (1) {
  26.         gptr = f1_alloc();
  27.         strcpy(gptr, string);
  28.         f2_copyme();
  29.         f3_free(gptr);
  30.     }
  31. }
  32.  
  33. char *f1_alloc()
  34. {
  35.     return (malloc(MEMSIZE));
  36. }
  37. char *f2_copyme()
  38. {
  39.     static int len, i = 0;
  40.     char *s;
  41.  
  42.     len = strlen(string);
  43.     s = (char *)malloc(len);
  44.     strncpy(s, string, len);
  45.     i++;
  46.     if (!(i % MEMSIZE))
  47.         printf("i=%d, %s\n", i, s);
  48. }
  49.  
  50. void f3_free(char *p)
  51. {
  52.     num = rand() % 3;
  53.     if (!num)
  54.         free(p);
  55. }

Pre-Requisites
Basic understanding of C programming language

Target Audience
IT Professionals who are doing development, maintenance and testing of software products

Fee, Schedule & Registration
Click Here for Linux & C Debugging course training schedule, fee and registration information

Course Outline

  • C program to Process
  • Compilation Steps
  • Preprocessor
  • Compiler
  • Assembler
  • Linker / Loader
  • GCC options
  • Fixing Warnings in the Code
  • Include Files
  • Libraries
  • Static Vs Dynamic Library
  • Static Library Generation
  • Dynamic Library Generation
  • Linking with Libraries
  • File Formats
  • ELF Format
  • Symbol Tables
  • Anatomy of a Process
  • Process Map
  • Memory Layout
  • Code Segment
  • Data Segment
  • Stack Segment
  • Heap Segment
  • Object Dump
  • Stack Frames
  • Mapping Assembly to C
  • Managing Heap
  • Pmap / Pstack
  • Strace
  • Debugging Tools
  • GDB Debugger
  • Debugging Running Process
  • Core dump analysis
  • Symbols & Optimizations
  • Default Optimization Levels
  • Common Failures
  • Failure Notifications
  • Common Faults
  • Segmentation Violation
  • Stack Overflow
  • Heap Overflow
  • Arithmetic Overflow
  • Illegal code execution
  • Stack Issue
  • Endian-ness issue
  • C library assertion
  • Data Type mismatch

Manish Bhojasia, a technology veteran with 17+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He is Linux Kernel Developer and SAN Architect and is passionate about competency developments in these areas. He lives in Bangalore and delivers focused training sessions to IT professionals in Linux Kernel, Linux Debugging, Linux Device Drivers, Linux Networking, Linux Storage & Cluster Administration, Advanced C Programming, SAN Storage Technologies, SCSI Internals and Storage Protocols such as iSCSI & Fiber Channel. Stay connected with him below.

Sanfoundry is No. 1 choice for Deep Hands-ON Trainings in SAN, Linux & C, Kernel & Device Driver Programming. Our Founder has trained employees of almost all top companies in India. Here are few of them: Wipro Technologies, VMware, Citrix, Oracle, Motorola, Ericsson India, Motorola, Aricent, HP, Intuit, Microsoft, Cisco, SAP Labs, Siemens, HSBC, Northwest Bank, TCS, IBM, Accenture, Symantec, Redhat, Chelsio, Cavium Networks, ST Microelectronics, Samsung, LG-Soft, Mphasis, Tata Elxsi, Tata Communications, Mindtree, Cognizant, mid size IT companies and startups. The assignments and real time projects for our courses are of extremely high quality with excellent learning curve.

Register for Expert Level Training Classes by our Founder & CTO. Alternatively, call us for your Corporate Training or College Training needs.
Subscribe Newsletter & Posts





About

Manish Bhojasia, a technology veteran with 17+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He is Linux Kernel Developer and SAN Architect and is passionate about competency developments in these areas. He lives in Bangalore and delivers focused training sessions to IT professionals in Linux Kernel, Linux Debugging, Linux Device Drivers, Linux Networking, Linux Storage & Cluster Administration, Advanced C Programming, SAN Storage Technologies, SCSI Internals and Storage Protocols such as iSCSI & Fiber Channel. Stay connected with him below.

Posted in Trainings & Workshops
Testimonials
The presentation was really good. Advanced C was excellent.
— Alan - Wipro Technologies
It was a wonderful course, a thorough study through the bits and pieces of Storage Devices and the other advancements in the SAN technology which was very informative for me. Well prepared slides, practical thoughts and fully interactive class.
— Milind - Microsoft
The way of teaching is excellent. Now we have very good knowledge in linux systems programming.
— Javeed - TCS
The training I got was very helpful. The most important thing, which i liked the most is way of training based on "Show me the code". It has made my knowledge in Unix deeper and cleared the doubts I had and also made me to do lots of coding in very exciting ways during sessions. Thanks a million to Manish Bhojasia.
— Harsh - Wipro Technologies
The SAN training was excellent. Good hands on and conceptually I understood a lot, the learning curve was excellent. Thanks Manish!!
— Amit - Ericsson India
Best Training class I ever had on Linux.
— Swati - Aricent
Thank you for providing such an awesome experience on Linux Device Driver Programming. The real beauty in this training that I could witness was its practical exposures and explanations on the same in a neat way.
— Roshan - Oracle/Sun
Lab sessions for SAN on Ubuntu was very useful.
— Ajit - Ericsson India
Posted Image