2010-11-28 17 views
17

मैं जीडीबी का उपयोग कर एक प्रोग्राम डीबग कर रहा हूं। जब भी मैं ब्रेकपॉइंट याद करता हूं या कोई और दृष्टिकोण जोड़ने का फैसला करता हूं, तो मुझे प्रक्रिया को मारना होगा और इसे फिर से शुरू करना होगा। मौजूदा जीडीबी को संलग्न करने के लिए, मैं attach <pid> का उपयोग करता हूं। हालांकि, मुझे नई प्रक्रिया के ढक्कन को ढूंढना है।मैं gdb कमांड प्रॉम्प्ट से बाहरी कमांड कैसे निष्पादित कर सकता हूं?

जिस तरह से मैं आज करता हूं वह जीडीबी को निलंबित करना है, ps -C <program_name> के साथ पिड प्राप्त करें और फिर इसे संलग्न करने के लिए जीडीबी पर वापस आएं।

attach `ps -C <program_name>` 

मैं लिनक्स पर काम कर रहा हूँ:

वहाँ, खोल करने के लिए बाहर निकले बिना gdb कमांड प्रॉम्प्ट से एक यूनिक्स कमांड को चलाने के लिए इतना है कि मैं gdb के अंदर से कुछ इस तरह कर सकता है कोई तरीका है।

उत्तर

18

(gdb) मदद खोल
एक शेल कमांड के रूप में लाइन के बाकी निष्पादित। तर्कों के साथ, एक अवरक्त खोल चलाएं।

खत्म होने के बाद, आप gdb पर वापस जाने के लिए 'निकास' का उपयोग कर सकते हैं।

9
gdb$ shell 

shell$ execute_your_commands 

shell$ exit 

gdb$ you_have_returned_back_to_gdb_prompt 
4

तुम बस shell आदेश आप निष्पादित करने के लिए चाहते हैं, उदा .:

gdb$ shell g++ tsort.c -o tsort 

यह सिर्फ पिछले जवाब का एक संक्षिप्त रूप है, जिसके बाद उपयोग कर सकते हैं।

+0

इस मोड में जीडीबी कोर डंप होने पर समस्याओं को रिपोर्ट करने या रिपोर्ट करने में सक्षम नहीं लगता है। – Derek

1

स्वीकार्य उत्तर पर विस्तार करने के लिए, shell के लिए शॉर्टकट ! है।

(gdb) सहायता!

शेल कमांड के रूप में शेष पंक्ति को निष्पादित करें। कोई तर्क नहीं के साथ, एक निम्नतम खोल चलाएं।

संबंधित मुद्दे