سؤال
بشكل عام أرى العملية pid
التي تعمل في الخلفية وتبدأ DBX في تلك العملية باستخدام الأمر dbx -a <pid>
وبالمثل كيف يمكنني فعل ذلك باستخدام GDB؟
المحلول
هناك طريقتان.
من سطر الأوامر ، قم بتضمين PID كوسيطة بعد الاسم القابل للتنفيذ:
gdb /path/to/prog PID
من داخل GDB ، يمكنك استخدام أمر إرفاق:
gdb /path/to/prog
gdb> attach PID
على الرغم من أن التحديد في سطر الأوامر أكثر إيجازًا ، إلا أن هناك خطرًا بسيطًا أنه إذا كان لديك ملف أساسي يحتوي على اسم يشبه PID (أي لـ PID 2345 ، فيجب تسمية الملف الأساسي "2345 ") ثم سيفتح GDB الملف الأساسي. من المسلم به أن فرصة الحدوث هذه ضئيلة.
نصائح أخرى
بالإضافة إلى السابق يمكنك استخدامه مباشرة
gdb -p <pid>
من صفحة GDB Man:
يمكنك ، بدلاً من ذلك ، تحديد معرف العملية كوسيطة ثانية ، إذا كنت ترغب في تصحيح عملية التشغيل:
gdb program 1234
لا تنتمي إلى StackOverflow