मैं लिखा है दो सरल कार्यक्रमों के बावजूद काम नहीं कर रहा:gdb को execv का पालन कैसे करें? "फ़ॉलो-कार्यकारी-मोड"
int main(int ac, char **argv) {
execv("/home/me/Desktop/execvtest2", argv);
}
और
int main(int ac, char **argv) {
execv("/home/me/Desktop/execvtest1", argv);
}
मैं उन्हें अनुसार outputfiles को जीसीसी जी के साथ संकलित किया है। मैं जीसीसी (उबंटू/लिनारो 4.4.4-14ubuntu5.1) 4.4.5 का उपयोग कर उबंटू 10.10 चला रहा हूं।
जब मैं जीएनयू जीडीबी (जीडीबी) 7.2-उबंटू के साथ पहला प्रोग्राम डीबग कर रहा हूं, तो मैं पहले execv कथन तक कदम उठा सकता हूं, लेकिन फिर दो फाइलें चलती रहती हैं। भले ही मैं फॉलो-एक्जिक-मोड को नए पर सेट करता हूं, फिर भी मैं दूसरे प्रोग्राम में नहीं जा सकता। जब मैं कैच निष्पादन सेट करता हूं, तो gdb execv को प्रत्येक कॉल पर रुक जाता है (कुछ दूसरे प्रोग्राम के लिए लिंक किए गए स्रोत के बिना कैसे, और मैं gdb को छोड़ने में सक्षम नहीं हूं, क्योंकि यह लटकता है !?), लेकिन मैं सक्षम नहीं हूं कॉल को "नए" में कॉल करने के लिए (जैसा कि प्रोक प्रक्रिया को बदलता है) निम्न कार्यक्रम।
तो यह कैसे किया जा सकता है? नई प्रक्रिया में कदम उठाने का एक तरीका होना चाहिए? क्या मुझसे कुछ गलत हो रही है?
चीयर्स
कौन सा ओएस, जिसका उपयोग आप कर रहे हैं? – alk
मैंने अभी 'gcc' संस्करण' (डेबियन 4.4.5-8) 4.4.5' का उपयोग करके इसका परीक्षण किया है, लाइन 2 पर ब्रेक पॉइंट सेट करें और दो निष्पादन योग्य में 'gdb' अच्छी तरह से तोड़कर देखें। – alk
बीटीडब्ल्यू: इस परीक्षण के लिए इस्तेमाल किया गया 'जीसीसी' (ऊपर वर्णित संस्करण के साथ) किसी भी तरह से 'फॉलो-एक्जिक-मोड' के बारे में नहीं है। – alk