GNU Debugger (GDB): Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@pipegas_WP)
 
Line 1: Line 1:
=== GNU Debugger (GDB) : دليل شامل للمبتدئين ===
## GNU Debugger (GDB): دليل شامل للمبتدئين


'''GNU Debugger (GDB)''' هو مصحح أخطاء قوي ومرن يستخدم على نطاق واسع في تطوير البرمجيات. يسمح للمبرمجين بتتبع تنفيذ التعليمات البرمجية، وفحص قيم المتغيرات، وتحديد أسباب الأخطاء المنطقية في برامجهم. هذا الدليل موجه للمبتدئين ويهدف إلى تقديم فهم أساسي لكيفية استخدام GDB لتصحيح أخطاء برامج C و C++ بشكل فعال.
'''GNU Debugger (GDB)''' هو مصحح أخطاء قوي ومرن للعديد من لغات البرمجة، بما في ذلك C و C++ و Java و Python و Assembly وغيرها. يُستخدم GDB بشكل أساسي لتحديد وتصحيح الأخطاء في البرامج، وفهم سلوكها الداخلي، وتحسين أدائها. هذا الدليل موجه للمبتدئين ويهدف إلى تزويدهم بالمعرفة الأساسية لاستخدام GDB بفعالية.


== ما هو تصحيح الأخطاء ولماذا نستخدم GDB؟ ==
== ما هو مصحح الأخطاء؟ ==


تصحيح الأخطاء (Debugging) هو عملية تحديد وإصلاح الأخطاء (Bugs) في التعليمات البرمجية. يمكن أن تكون الأخطاء ناتجة عن أسباب مختلفة، مثل الأخطاء النحوية، والأخطاء المنطقية، وأخطاء الذاكرة. بدون أدوات تصحيح الأخطاء، يمكن أن تكون عملية العثور على الأخطاء وإصلاحها في البرامج المعقدة مستهلكة للوقت ومحبطة.
قبل الغوص في تفاصيل GDB، من المهم فهم دور مصحح الأخطاء.  عندما يظهر خطأ في برنامج، قد يكون من الصعب تحديد السبب الجذري. مصحح الأخطاء يسمح لك بتنفيذ البرنامج خطوة بخطوة، وفحص قيم المتغيرات، وتتبع تدفق التحكم، مما يساعدك على تتبع مصدر المشكلة وإصلاحها. يُعتبر [[تصحيح الأخطاء]] جزءًا أساسيًا من دورة تطوير البرمجيات.


GDB يوفر مجموعة واسعة من الميزات التي تسهل عملية تصحيح الأخطاء، بما في ذلك:
== تثبيت GDB ==


*  '''نقاط التوقف (Breakpoints):''' تسمح لك بإيقاف تنفيذ البرنامج مؤقتًا في نقاط محددة.
عادةً ما يتم تثبيت GDB مسبقًا على أنظمة Linux و macOS. إذا لم يكن مثبتًا، يمكنك تثبيته باستخدام مدير الحزم الخاص بنظامك. على سبيل المثال، على Debian/Ubuntu:
*  '''التتبع (Stepping):''' يتيح لك تنفيذ البرنامج سطرًا بسطر لفهم تدفق التنفيذ.
*  '''فحص المتغيرات (Variable Inspection):''' يسمح لك بعرض قيم المتغيرات في أي نقطة خلال التنفيذ.
*  '''الذاكرة (Memory Inspection):''' يسمح لك بفحص محتويات الذاكرة.
*  '''الاستدعاءات المكدسة (Call Stack):''' يعرض قائمة الدوال التي تم استدعاؤها للوصول إلى النقطة الحالية في التنفيذ.
*  '''التعديل (Modification):''' يتيح لك تغيير قيم المتغيرات أثناء التنفيذ.


== تثبيت GDB ==
```bash
sudo apt-get install gdb
```


عادةً ما يأتي GDB مثبتًا مسبقًا على أنظمة Linux و macOS. إذا لم يكن مثبتًا، يمكنك تثبيته باستخدام مدير الحزم الخاص بنظام التشغيل الخاص بك. على سبيل المثال، على Debian/Ubuntu:
على Fedora/CentOS/RHEL:


[[User:Admin|Admin]] ([[User talk:Admin|talk]])bash
```bash
sudo apt-get update
sudo yum install gdb
sudo apt-get install gdb
```
[[User:Admin|Admin]] ([[User talk:Admin|talk]])


== تجميع البرنامج مع معلومات التصحيح ==
== أساسيات GDB ==


لتتمكن من تصحيح برنامج باستخدام GDB، يجب تجميعه مع معلومات التصحيح. يتم ذلك باستخدام الخيار `-g` عند استخدام المترجم. على سبيل المثال:
### تجميع البرنامج مع معلومات التصحيح


[[User:Admin|Admin]] ([[User talk:Admin|talk]])bash
لتتمكن من استخدام GDB لتصحيح برنامج، يجب عليك تجميعه مع معلومات التصحيح. يتم ذلك عادةً باستخدام العلامة `-g` عند استخدام [[GCC]] أو [[Clang]]. على سبيل المثال:
g++ -g myprogram.cpp -o myprogram
[[User:Admin|Admin]] ([[User talk:Admin|talk]])


هذا سيضمن أن GDB يمكنه الوصول إلى معلومات حول أسماء المتغيرات وأنواعها ومواقع التعليمات البرمجية.
```bash
gcc -g myprogram.c -o myprogram
```


== تشغيل GDB ==
### تشغيل GDB


لتشغيل GDB، استخدم الأمر التالي:
لتشغيل GDB، استخدم الأمر التالي:


[[User:Admin|Admin]] ([[User talk:Admin|talk]])bash
```bash
gdb myprogram
gdb myprogram
[[User:Admin|Admin]] ([[User talk:Admin|talk]])
```


سيؤدي ذلك إلى بدء تشغيل GDB وتحميل البرنامج القابل للتنفيذ `myprogram`.
سيؤدي هذا إلى بدء جلسة GDB وتحميل ملف تنفيذي (executable) يسمى `myprogram`.


== أوامر GDB الأساسية ==
### أوامر GDB الأساسية


| الأمر | الوصف |
| الأمر | الوصف |
|---|---|
|---|---|
| '''break <location>''' | يضيف نقطة توقف في الموقع المحدد (اسم دالة، رقم سطر، إلخ). |
| `break <location>` | يضع نقطة توقف (breakpoint) في موقع معين في الكود.  يمكن أن يكون الموقع رقم سطر، اسم دالة، أو اسم ملف:سطر. |
| '''run''' | يبدأ تشغيل البرنامج. |
| `run` | يبدأ تنفيذ البرنامج. |
| '''next''' | ينفذ السطر التالي من التعليمات البرمجية، مع تجاوز استدعاءات الدوال. |
| `next` | ينفذ السطر التالي من الكود، متجاوزًا استدعاءات الدوال. |
| '''step''' | ينفذ السطر التالي من التعليمات البرمجية، ويدخل إلى استدعاءات الدوال. |
| `step` | ينفذ السطر التالي من الكود، ويدخل إلى استدعاءات الدوال. |
| '''continue''' | يستأنف التنفيذ حتى نقطة التوقف التالية. |
| `continue` | يستأنف التنفيذ حتى نقطة التوقف التالية. |
| '''print <expression>''' | يعرض قيمة التعبير المحدد. |
| `print <expression>` | يعرض قيمة تعبير معين. |
| '''info locals''' | يعرض قيم المتغيرات المحلية في النطاق الحالي. |
| `backtrace` | يعرض مسار الاستدعاءات (call stack) الحالي. |
| '''backtrace''' | يعرض الاستدعاءات المكدسة. |
| `info locals` | يعرض قيم المتغيرات المحلية في النطاق الحالي. |
| '''quit''' | يخرج من GDB. |
| `quit` | يخرج من GDB. |
| '''list''' | يعرض التعليمات البرمجية المصدر حول نقطة التوقف الحالية. |
| `list` | يعرض الكود المحيط بموقع التنفيذ الحالي. |


== مثال عملي ==
### مثال عملي


لنفترض أن لدينا برنامج C++ بسيط يحتوي على خطأ:
لنفترض أن لدينا برنامج C بسيطًا يسمى `sum.c`:


```cpp
```c
#include <iostream>
#include <stdio.h>
 
int sum(int a, int b) {
  int result = a + b;
  return result;
}


int main() {
int main() {
   int x = 5;
   int x = 5;
   int y = 0;
   int y = 10;
   int z = x / y; // خطأ: القسمة على صفر
   int total = sum(x, y);
   std::cout << "Result: " << z << std::endl;
   printf("The sum is: %d\n", total);
   return 0;
   return 0;
}
}
```
```


1.  **تجميع البرنامج:** `g++ -g example.cpp -o example`
لتصحيح هذا البرنامج باستخدام GDB:
2.  **تشغيل GDB:** `gdb example`
3.  **إضافة نقطة توقف:** `break 7` (لتحديد نقطة التوقف في السطر السابع)
4.  **تشغيل البرنامج:** `run`
5.  **فحص المتغيرات:** `print y` (ستظهر القيمة 0)
6.  **التتبع:** `next` (سيؤدي إلى الخطأ)


سيتوقف البرنامج عند نقطة التوقف، ويمكنك فحص قيم المتغيرات. عند تنفيذ السطر السابع باستخدام `next`، سيحدث الخطأ (القسمة على صفر). GDB سيعرض رسالة خطأ تفصيلية، مما يساعدك على تحديد سبب المشكلة.
1.  قم بتجميعه مع معلومات التصحيح: `gcc -g sum.c -o sum`
2.  ابدأ GDB: `gdb sum`
3.  ضع نقطة توقف في الدالة `sum`: `break sum`
4.  ابدأ التنفيذ: `run`
5.  استخدم `next` لتنفيذ الأسطر داخل الدالة `sum`.
6.  استخدم `print a` و `print b` لعرض قيم المتغيرين `a` و `b`.
7.  استخدم `continue` لمواصلة التنفيذ حتى نهاية البرنامج.
8.  اخرج من GDB: `quit`


== تقنيات تصحيح الأخطاء المتقدمة ==
== ميزات متقدمة في GDB ==


'''التعبيرات الشرطية (Conditional Breakpoints):''' يمكن إضافة شروط إلى نقاط التوقف بحيث تتوقف التنفيذ فقط عندما تكون الشروط صحيحة.
**Conditional Breakpoints:** يمكن تحديد نقاط توقف مشروطة يتم تفعيلها فقط عندما يتحقق شرط معين.  مثال: `break 10 if x > 5`.
'''نقاط التوقف الوظيفية (Function Breakpoints):''' يمكن إعداد نقاط التوقف عند بداية أو نهاية دالة معينة.
*  **Watchpoints:**  تراقب قيمة متغير معين وتتوقف عندما تتغير قيمته. مثال: `watch x`.
'''المراقبة (Watchpoints):''' تتيح لك مراقبة قيمة متغير معين والتوقف عندما تتغير.
**Data Breakpoints:**  تتوقف عند الوصول إلى عنوان ذاكرة معين.
'''إدارة الذاكرة (Memory Management):''' يمكن استخدام GDB لفحص تسرب الذاكرة والأخطاء المتعلقة بإدارة الذاكرة.
**Reverse Debugging:**  تتيح لك العودة إلى الوراء خطوة بخطوة لتتبع الأخطاء.
**Python Scripting:**  يمكن استخدام Python لكتابة نصوص برمجية لتوسيع وظائف GDB.


== استخدام GDB مع Makefiles ==
== GDB و تحليل الأداء ==


يمكن دمج GDB بسهولة مع Makefiles لتبسيط عملية التصحيح. يمكنك إضافة هدف تصحيح الأخطاء إلى Makefile الخاص بك لتجميع البرنامج مع معلومات التصحيح وتشغيله في GDB.
GDB يمكن أن يساعد في [[تحليل الأداء]] للبرامج. من خلال قياس الوقت المستغرق لتنفيذ أجزاء مختلفة من الكود، يمكنك تحديد الاختناقات وتحسين الأداء.  يمكن استخدام أدوات إضافية مثل [[perf]] بالتعاون مع GDB لتوفير معلومات أكثر تفصيلاً حول أداء البرنامج.


== أدوات تصحيح الأخطاء الأخرى ==
== GDB و أنظمة التشغيل المختلفة ==


بالإضافة إلى GDB، هناك العديد من أدوات تصحيح الأخطاء الأخرى المتاحة، مثل '''Valgrind''' و '''AddressSanitizer''' و '''Static Analyzers'''. كل أداة لها نقاط قوتها وضعفها، ويمكن استخدامها بشكل تكميلي لتحسين عملية تصحيح الأخطاء.
GDB ليس مقتصرًا على Linux و macOS.  هناك إصدارات متاحة لأنظمة تشغيل أخرى مثل Windows. بالإضافة إلى ذلك، يمكن استخدام GDB عن بعد لتصحيح البرامج التي تعمل على أجهزة أخرى عبر الشبكة.


== استراتيجيات التداول ذات الصلة ==
== موارد إضافية ==
 
*  [[استراتيجية الاختراق (Breakout Strategy)]]
*  [[استراتيجية المتوسطات المتحركة (Moving Average Strategy)]]
*  [[استراتيجية مؤشر القوة النسبية (RSI Strategy)]]
*  [[استراتيجية خطوط بولينجر (Bollinger Bands Strategy)]]
*  [[استراتيجية التصحيح (Pullback Strategy)]]
 
== التحليل الفني ==
 
*  [[الشموع اليابانية (Candlestick Patterns)]]
*  [[مستويات الدعم والمقاومة (Support and Resistance Levels)]]
*  [[خطوط الاتجاه (Trend Lines)]]
*  [[مؤشر الماكد (MACD)]]
*  [[مؤشر ستوكاستيك (Stochastic Oscillator)]]
 
== تحليل حجم التداول ==
 
*  [[مؤشر حجم التداول على السعر (On Balance Volume (OBV))]
*  [[حجم التداول (Volume)]]
*  [[مؤشر التراكم/التوزيع (Accumulation/Distribution Line)]]
*  [[مؤشر تشايكين لتدفق الأموال (Chaikin Money Flow)]]
*  [[التقارب/التباعد في حجم التداول (Volume Convergence/Divergence)]]


== موارد إضافية ==
*  [[وثائق GDB الرسمية]]
*  [[GNU]]
*  [[تصحيح الأخطاء الديناميكي]]
*  [[تحليل الكود الثابت]]
*  [[دورة حياة تطوير البرمجيات]]


*  [[وثائق GDB الرسمية (Official GDB Documentation)]]
== الاستراتيجيات ذات الصلة || التحليل الفني و حجم التداول (للتوضيح السياقي) ==
*  [[GDB: The GNU Debugger]]
*  [[تصحيح الأخطاء في C++ (Debugging in C++)]]
*  [[تصحيح الأخطاء في Linux (Debugging in Linux)]]
*  [[استخدام GDB مع Visual Studio Code]]


أتمنى أن يكون هذا الدليل قد قدم لك مقدمة مفيدة إلى عالم GDB. تصحيح الأخطاء هو مهارة أساسية لأي مبرمج، وإتقان GDB يمكن أن يوفر لك الكثير من الوقت والجهد.
على الرغم من أن GDB هو أداة لتطوير البرمجيات، إلا أن فهم مفاهيم مثل [[تحليل حجم التداول]] و [[التحليل الفني]] يمكن أن يكون مفيدًا في فهم سلوك الأنظمة المعقدة التي قد تعتمد على البرامج التي يتم تصحيحها.  على سبيل المثال، إذا كنت تصحح برنامجًا لمعالجة بيانات السوق المالية، فإن فهم [[مؤشرات التداول]] و [[أنماط الرسوم البيانية]] قد يكون ضروريًا.  تشمل استراتيجيات التداول ذات الصلة [[التداول اليومي]] و [[التداول المتأرجح]] و [[التداول طويل الأجل]].  كما أن فهم [[إدارة المخاطر]] و [[تنويع المحفظة]] يمكن أن يساعد في تقييم تأثير الأخطاء المحتملة في البرامج المالية.  بالإضافة إلى ذلك، يمكن أن تكون [[نظرية الاحتمالات]] و [[الإحصاء الوصفي]] مفيدة في تحليل بيانات الأداء.  [[التحليل الأساسي]] و [[التحليل الفني المتقدم]] يمكن أن يوفران رؤى إضافية.  تشمل أدوات التحليل الأخرى [[بولينجر باندز]] و [[مؤشر القوة النسبية]] و [[التقارب والتباعد المتوسط المتحرك]].  [[التحليل الموجي]] و [[تداول الأخبار]] و [[التداول الخوارزمي]] هي أيضًا استراتيجيات ذات صلة. [[التحليل العرضي]] و [[التحليل المستهدف]] يمكن أن يساعدان في تحديد نقاط الدخول والخروج المحتملة.


[[Category:الفئة:أدوات_تصحيح_الأخطاء]]
[[Category: مصححات الأخطاء]]


== ابدأ التداول الآن ==
== ابدأ التداول الآن ==

Latest revision as of 00:01, 24 April 2025

    1. GNU Debugger (GDB): دليل شامل للمبتدئين

GNU Debugger (GDB) هو مصحح أخطاء قوي ومرن للعديد من لغات البرمجة، بما في ذلك C و C++ و Java و Python و Assembly وغيرها. يُستخدم GDB بشكل أساسي لتحديد وتصحيح الأخطاء في البرامج، وفهم سلوكها الداخلي، وتحسين أدائها. هذا الدليل موجه للمبتدئين ويهدف إلى تزويدهم بالمعرفة الأساسية لاستخدام GDB بفعالية.

ما هو مصحح الأخطاء؟

قبل الغوص في تفاصيل GDB، من المهم فهم دور مصحح الأخطاء. عندما يظهر خطأ في برنامج، قد يكون من الصعب تحديد السبب الجذري. مصحح الأخطاء يسمح لك بتنفيذ البرنامج خطوة بخطوة، وفحص قيم المتغيرات، وتتبع تدفق التحكم، مما يساعدك على تتبع مصدر المشكلة وإصلاحها. يُعتبر تصحيح الأخطاء جزءًا أساسيًا من دورة تطوير البرمجيات.

تثبيت GDB

عادةً ما يتم تثبيت GDB مسبقًا على أنظمة Linux و macOS. إذا لم يكن مثبتًا، يمكنك تثبيته باستخدام مدير الحزم الخاص بنظامك. على سبيل المثال، على Debian/Ubuntu:

```bash sudo apt-get install gdb ```

على Fedora/CentOS/RHEL:

```bash sudo yum install gdb ```

أساسيات GDB

      1. تجميع البرنامج مع معلومات التصحيح

لتتمكن من استخدام GDB لتصحيح برنامج، يجب عليك تجميعه مع معلومات التصحيح. يتم ذلك عادةً باستخدام العلامة `-g` عند استخدام GCC أو Clang. على سبيل المثال:

```bash gcc -g myprogram.c -o myprogram ```

      1. تشغيل GDB

لتشغيل GDB، استخدم الأمر التالي:

```bash gdb myprogram ```

سيؤدي هذا إلى بدء جلسة GDB وتحميل ملف تنفيذي (executable) يسمى `myprogram`.

      1. أوامر GDB الأساسية

| الأمر | الوصف | |---|---| | `break <location>` | يضع نقطة توقف (breakpoint) في موقع معين في الكود. يمكن أن يكون الموقع رقم سطر، اسم دالة، أو اسم ملف:سطر. | | `run` | يبدأ تنفيذ البرنامج. | | `next` | ينفذ السطر التالي من الكود، متجاوزًا استدعاءات الدوال. | | `step` | ينفذ السطر التالي من الكود، ويدخل إلى استدعاءات الدوال. | | `continue` | يستأنف التنفيذ حتى نقطة التوقف التالية. | | `print <expression>` | يعرض قيمة تعبير معين. | | `backtrace` | يعرض مسار الاستدعاءات (call stack) الحالي. | | `info locals` | يعرض قيم المتغيرات المحلية في النطاق الحالي. | | `quit` | يخرج من GDB. | | `list` | يعرض الكود المحيط بموقع التنفيذ الحالي. |

      1. مثال عملي

لنفترض أن لدينا برنامج C بسيطًا يسمى `sum.c`:

```c

  1. include <stdio.h>

int sum(int a, int b) {

 int result = a + b;
 return result;

}

int main() {

 int x = 5;
 int y = 10;
 int total = sum(x, y);
 printf("The sum is: %d\n", total);
 return 0;

} ```

لتصحيح هذا البرنامج باستخدام GDB:

1. قم بتجميعه مع معلومات التصحيح: `gcc -g sum.c -o sum` 2. ابدأ GDB: `gdb sum` 3. ضع نقطة توقف في الدالة `sum`: `break sum` 4. ابدأ التنفيذ: `run` 5. استخدم `next` لتنفيذ الأسطر داخل الدالة `sum`. 6. استخدم `print a` و `print b` لعرض قيم المتغيرين `a` و `b`. 7. استخدم `continue` لمواصلة التنفيذ حتى نهاية البرنامج. 8. اخرج من GDB: `quit`

ميزات متقدمة في GDB

  • **Conditional Breakpoints:** يمكن تحديد نقاط توقف مشروطة يتم تفعيلها فقط عندما يتحقق شرط معين. مثال: `break 10 if x > 5`.
  • **Watchpoints:** تراقب قيمة متغير معين وتتوقف عندما تتغير قيمته. مثال: `watch x`.
  • **Data Breakpoints:** تتوقف عند الوصول إلى عنوان ذاكرة معين.
  • **Reverse Debugging:** تتيح لك العودة إلى الوراء خطوة بخطوة لتتبع الأخطاء.
  • **Python Scripting:** يمكن استخدام Python لكتابة نصوص برمجية لتوسيع وظائف GDB.

GDB و تحليل الأداء

GDB يمكن أن يساعد في تحليل الأداء للبرامج. من خلال قياس الوقت المستغرق لتنفيذ أجزاء مختلفة من الكود، يمكنك تحديد الاختناقات وتحسين الأداء. يمكن استخدام أدوات إضافية مثل perf بالتعاون مع GDB لتوفير معلومات أكثر تفصيلاً حول أداء البرنامج.

GDB و أنظمة التشغيل المختلفة

GDB ليس مقتصرًا على Linux و macOS. هناك إصدارات متاحة لأنظمة تشغيل أخرى مثل Windows. بالإضافة إلى ذلك، يمكن استخدام GDB عن بعد لتصحيح البرامج التي تعمل على أجهزة أخرى عبر الشبكة.

موارد إضافية

الاستراتيجيات ذات الصلة || التحليل الفني و حجم التداول (للتوضيح السياقي)

على الرغم من أن GDB هو أداة لتطوير البرمجيات، إلا أن فهم مفاهيم مثل تحليل حجم التداول و التحليل الفني يمكن أن يكون مفيدًا في فهم سلوك الأنظمة المعقدة التي قد تعتمد على البرامج التي يتم تصحيحها. على سبيل المثال، إذا كنت تصحح برنامجًا لمعالجة بيانات السوق المالية، فإن فهم مؤشرات التداول و أنماط الرسوم البيانية قد يكون ضروريًا. تشمل استراتيجيات التداول ذات الصلة التداول اليومي و التداول المتأرجح و التداول طويل الأجل. كما أن فهم إدارة المخاطر و تنويع المحفظة يمكن أن يساعد في تقييم تأثير الأخطاء المحتملة في البرامج المالية. بالإضافة إلى ذلك، يمكن أن تكون نظرية الاحتمالات و الإحصاء الوصفي مفيدة في تحليل بيانات الأداء. التحليل الأساسي و التحليل الفني المتقدم يمكن أن يوفران رؤى إضافية. تشمل أدوات التحليل الأخرى بولينجر باندز و مؤشر القوة النسبية و التقارب والتباعد المتوسط المتحرك. التحليل الموجي و تداول الأخبار و التداول الخوارزمي هي أيضًا استراتيجيات ذات صلة. التحليل العرضي و التحليل المستهدف يمكن أن يساعدان في تحديد نقاط الدخول والخروج المحتملة.

ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер