مصحح جنو
أمثلة تطبيقية

لنأخد بعين الإعتبار الرمز البرمجي المصدري هذا، المكتوب بلغة C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

size_t foo_len( const char *s )
{
  return strlen( s );
}

int main( int argc, char *argv[] )
{
  const char *a = NULL;

  printf( "size of a = %lu\n", foo_len(a) );

  exit( 0 ); 
}
باستعمال مجموعة مترجمات جنو في نظام لينكس، يجب معالجة الرمز البرمجي أعلاه باستخدام عَلم -g لضمان تضمين معلومات التصحيح المناسبة على ملف نظام العد الثنائي (الباينري) الذي تم إنشاؤه. مما يجعل من الممكن فحصها باستخدام مصحح جنو، بافتراض أن الملف الذي يحتوي على الرمز البرمجي أعلاه مسمى باسم ecample.c، أمر التحويل البرمجي لمعالجة الملق يجب أن تكون كالتالي:
$ gcc example.c -Og -g -o example
ويمكننا الآن تشغيل ملف الثنائية (binary) بالشكل التالي:
$ ./example
Segmentation fault (خطأ في التجزئة)
بما أن الرمز البرمجي في المثال عند تنفيذه يعطينا خطأ في التجزئة (segmentation fault)، مصحح جنو يمكن استعماله لتفقد المشكلة:
$ gdb ./example
GNU gdb (GDB) Fedora (7.3.50.20110722-13.fc16)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://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 "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /path/example...done.
(gdb) run
Starting program: /path/example

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400527 in foo_len (s=0x0) at example.c:8
8 return strlen (s); (هنا يقول لنا أين الخطأ)
(gdb) print s
$1 = 0x0
المشكلة تظهر في السطر الثامن، وتحدث  عند استدعاء الدالة (الوظيفة) strlen (لأن حجتها s ، لا شيء) (because its argument, s, is NULL)، الخارج يمكن أن يكون مختلف، وذلك يعود إلى الدالة strlen (هل مضمنة أم لا)، عل سبيل المثال:
GNU gdb (GDB) 7.3.1
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://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-pc-linux-gnu".
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/gdb/example...done.
(gdb) run
Starting program: /tmp/gdb/example

Program received signal SIGSEGV, Segmentation fault.
0xb7ee94f3 in strlen () from /lib/i686/cmov/libc.so.6
(gdb) bt
#0 0xb7ee94f3 in strlen () from /lib/i686/cmov/libc.so.6
#1 0x08048435 in foo_len (s=0x0) at example.c:8
#2 0x0804845a in main (argc=<optimized out>, argv=<optimized out>) at example.c:16
لإصلاح المشكل، يجب أن يكون المتغير a على قيمة صالحة (في الدالة main). النسخة الصالحة للرمز البرمجي كالتالي:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

size_t foo_len( const char *s )
{
  return strlen(s);
}

int main( int argc, char *argv[] )
{
  const char *a = "This is a test string";

  printf( "size of a = %lu\n", foo_len(a) );

  exit( 0 );
}
بإعادة التحويل البرمجي لترجمة الرمز البرمجي، وإعادة تنفيذه داخل مصحح جنو الآن يعطينا النتائج الصحيحة.
GNU gdb (GDB) Fedora (7.3.50.20110722-13.fc16)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://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 "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /path/example...done.
(gdb) run
Starting program: /path/example
size of a = 21
[Inferior 1 (process 14290) exited normally] (انتهى بشكل طبيعي)
مصحح جنو يطبع خارج دالة printf في الشاشة، ثم يخبر المستخدم أن البرنامج انتهى بشكل طبيعي.