2011-03-25 10 views
18

मैं अपने आईफोन ऐप में एक कसकर लूप में चलने वाले कुछ कोड को ट्यून कर रहा हूं और यह देखने के लिए कि मैं सामान्य से कुछ भी देखता हूं, उत्पन्न हुआ असेंबली कोड देखने के लिए उत्सुक हूं।मैं एक्सकोड 4 में असेंबली की जांच कैसे कर सकता हूं?

Xcode 3.x में, वहाँ एक बिल्ड> दिखाएं विधानसभा कोड मेनू में विकल्प था, लेकिन मैं मेनू में कुछ भी या Xcode 4. के लिए दस्तावेज़

किसी को भी पता नहीं देखते हैं कि कैसे करने के लिए करते हैं यह करो? मैं "जीसीसी-एस" कर सकता था लेकिन मेरी समझ यह है कि यह पूरी तरह से संकलित नहीं होने के समान नहीं होगा।

+3

नए संस्करण में सहायक संपादक इसी विचारों में शामिल हैं: preprocess, विधानसभा और disassembly। http://stackoverflow.com/questions/5937031/xcode-4-preprocessor-output – jmihalicza

+0

किसी भी प्रतिस्थापन के साथ मूल सुविधाओं को बाहर करने की बात आती है जब कोई भी ऐप्पल की तरह नहीं है। –

उत्तर

20

"देखें Disassembly" विकल्प चला गया है, जहाँ तक मैं बता सकता है।

यहाँ एक वैकल्पिक हल है:।

  1. अपनी परियोजना
  2. ओपन का निर्माण लॉग निर्माण, और खोज विंडो का उपयोग संकलन आदेश है कि स्रोत फ़ाइल में आपकी रुचि है निर्माण करने के लिए इस्तेमाल किया गया था खोजने के लिए कॉपी पूरे निर्माण कमांड।
  3. अपनी प्रोजेक्ट निर्देशिका में टर्मिनल विंडो खोलें, और सीडी खोलें।
  4. बिल्ड लॉग से टर्मिनल में बिल्ड कमांड पेस्ट करें, और -save-temps संलग्न करें। प्रवेश मारा।
  5. अब आपके पास दो नई फ़ाइलें हैं, yourFile.i और yourFile.s, जो प्रीप्रोसेस्ड स्रोत और जेनरेटेड असेंबली हैं, क्रमशः आपके प्रोजेक्ट में मौजूद हैं।

वैकल्पिक रूप से, आप का निर्माण किया बाइनरी (या वस्तु फ़ाइल अपने स्रोत फ़ाइल से उत्पन्न) otool -tvV /path/to/binaryOrDotOFile का उपयोग कर एकत्रित न कर सकते हैं।

अंत में, यदि यह एक ऐसी सुविधा है जिसे आप वापस लेना चाहते हैं, तो बग रिपोर्ट दर्ज करना सुनिश्चित करें!

संपादित करें: यह सुविधा वापस एक्सकोड 4.1 में है। सहायक संपादक फलक में, "जेनरेटेड आउटपुट -> YourFilename (असेंबली)" चुनें। बूम!

+1

बहुत बढ़िया! ओटोल ने चाल की। – Bill

3

एक्सकोड 4 के this thorough review के अनुसार, यह कार्यक्षमता एक्सकोड 4 से हटा दी गई है। यदि आप कोशिश करना चाहते हैं और इसे वापस लेना चाहते हैं तो आपको एक बग/rdar फ़ाइल करने की आवश्यकता होगी।

Xcode में एक अन्य उपयोगी त्वरित नज़र एक ही लेखक द्वारा 4 विशेषताएं: http://pilky.me/view/16

3

Ctrl + F7 एक या अधिक बार प्रेस करने का प्रयास करें और आपको असेंबली कोड दिखाई देगा।

4

मेरे जैसे आलसी लोगों के लिए, स्टीव कैनन का सुझाव-सेव-टेम्पस ध्वज का उपयोग करने के लिए उपरोक्त सुझाव भी कम काम के साथ पूरा किया जा सकता है: परियोजना सेटिंग्स पर जाएं -> चरणों का निर्माण करें -> संकलन स्रोतों और "कंपाइलर ध्वज" कॉलम पर ध्यान दें । ऐड-सेव-टेम्पस जो भी फ़ाइल आपको डिस्सेप्लर की आवश्यकता है, और .ii और .s फ़ाइलें प्रोजेक्ट निर्देशिका में समाप्त हो जाएंगी।

शायद एक बेहतर समाधान "-Wa, -alh" और एक खोल रीडायरेक्ट "> myFile.s" जैसे कस्टम नियम बनाना होगा, लेकिन मुझे नहीं लगता कि डिफ़ॉल्ट निर्माण नियम को आसानी से डुप्लिकेट कैसे करें संशोधन के लिए।

दुनिया में कैसे "असेंबली देखें" एक्सकोड 4 से हटा दिया गया है?!?

16

आप उत्पाद-> जनरेट आउटपुट-> असेंबली फ़ाइल पर जाकर असेंबली का निर्माण कर सकते हैं। आशा है कि यह वही है जो आप खोज रहे हैं।

नोट: वे इसे फिर से Xcode 5 में बदल ऊपर जवाब बात अब

11

Xcode में 5.0.2 आप उत्पाद → प्रदर्शन कार्रवाई → "MyController.m इकट्ठा"

चयन कर सकते हैं कर रही है

एनबी हालांकि यह प्रश्न एक्सकोड 4 को संदर्भित करता है, यह Google पर परिणामों में उच्च आता है।

2

डीबगर में चलाएं और निष्पादन तोड़ें, और आप डीबगर में "डिसस" टाइप कर सकते हैं। डिफ़ॉल्ट रूप से यह वर्तमान फ़ंक्शन को अलग कर देगा, इसलिए आमतौर पर उस फ़ंक्शन में ब्रेकपॉइंट डालना सबसे तेज़ होता है जिसे आप देखना चाहते हैं। एलएलडीबी में, "डिसस-एच" अन्य विकल्पों को दिखाएगा, जैसे नामित फ़ंक्शन को अलग करना (सुनिश्चित नहीं है कि यह ओबीजेसी चयनकर्ताओं के लिए काम करता है)।

, हाथ से स्रोत फ़ाइलों के पुनर्निर्माण में कम से कम से एक बहुत आसान ...

+0

मुझे विश्वास है कि सहायता के साथ उपयोग किया जाता है: 'सहायता disass' –

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