প্রতীকী আইফোন অ্যাপ ক্রাশ রিপোর্ট


433

আমি আমার আইফোন অ্যাপ্লিকেশনটির ক্র্যাশ প্রতিবেদনগুলি চেষ্টা করে প্রতীকী করতে চাইছি।

আমি আইটিউনস কানেক্ট থেকে ক্র্যাশ প্রতিবেদনগুলি পুনরুদ্ধার করেছি। আমার কাছে অ্যাপ স্টোরের কাছে জমা দেওয়া অ্যাপ্লিকেশন বাইনারি রয়েছে এবং আমার কাছে ডিএসওয়াইএম ফাইল রয়েছে যা বিল্ডের অংশ হিসাবে উত্পন্ন হয়েছিল।

আমার কাছে এই সমস্ত ফাইল একসাথে একটি ডিরেক্টরিতে থাকে যা স্পটলাইট দ্বারা সূচিত হয়।

এখন কি?

আমি অনুরোধ করার চেষ্টা করেছি:

symbolicatecrash crashreport.crash myApp.app.dSYM

এবং এটি ক্র্যাশ প্রতিবেদনে একই পাঠ্যটিকে আউটপুট দেয় যা প্রতীকযুক্ত নয়।

আমি কি ভুল কিছু করছি?


3
আপনি আইফোন এসডিকে আমার উত্তরটিও দেখতে পারেন : সিম্বলিকক্র্যাশ.শ কোথায় অবস্থিত? symbolicatecrashকমান্ডটি কোথায় সন্ধান করতে হবে , কীভাবে এটি ব্যবহার করতে হবে এবং প্রতীকটি করতে কীভাবে ডিএসওয়াইএম ফাইলটি সন্ধান করতে হবে তা আমি তালিকাবদ্ধ করেছি।
স্যাম

6
/ অ্যাপ্লিকেশনস
এক্সকোড.এপ /

5
আমি একটি স্ক্রিপ্ট তৈরি করেছি যা সাহায্য করতে পারে: github.com/amleszk/scriptts/blob/master/…
amleszk

1
যদি কেউ ভাবছেন যে আপনি কোথায় আছেন *। অ্যাপ, * .ডিএসওয়াইএম এবং ক্র্যাশ লগগুলি পেতে পারেন তবে নীচের আমার উত্তরটি দেখুন।
স্যাম বি

3
: আপনি এই পাঠাতে পারেন medium.com/@Mrugraj/crash-re-symbolication-5c28d3a3a883
Mrug

উত্তর:


689

আপেল থেকে ক্র্যাশ প্রতিবেদন বিশ্লেষণের পদক্ষেপ:

  1. রিলিজ। অ্যাপ্লিকেশন ফাইলটি অ্যাপস্টোরের দিকে ধাক্কা দিয়েছিল, মুক্তির সময় তৈরি করা .dSYM ফাইল এবং ক্র্যাশ প্রতিবেদনটি অ্যাপল থেকে একটি ফোল্ডারে পেয়েছে ।

  2. টার্মিনাল অ্যাপ্লিকেশনটি খুলুন এবং উপরের ফোল্ডারে যান ( cdকমান্ড ব্যবহার করে )

  3. চালান atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH। প্রতিবেদন অনুসারে অ্যাপটি ক্র্যাশ করেছে এমন মেমরির অবস্থানটি হওয়া উচিত।

উদা: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508

এটি আপনাকে সঠিক লাইন, পদ্ধতির নামটি দেখাবে যার ফলে ক্রাশ হয়েছে।

উদা: [classname functionName:]; -510

প্রতীকী আইপিএ

যদি আমরা প্রতীকীকরণের জন্য আইপিএ ব্যবহার করি - কেবল এক্সটেনশনটির নামকরণ করুন। জিপ দিয়ে আইপিএ, এটি এক্সট্রাক্ট করুন তবে আমরা অ্যাপ পেলে লোড ফোল্ডারটি পেতে পারি। এই ক্ষেত্রে আমাদের .dSYM ফাইলের দরকার নেই।

বিঃদ্রঃ

এটি কেবল তখনই কাজ করতে পারে যদি অ্যাপ্লিকেশন বাইনারিটিতে চিহ্ন ছিনিয়ে না নেওয়া হয়। ডিফল্টরূপে রিলিজগুলি প্রতীকগুলি ছিনিয়ে নেয়। আমরা প্রজেক্ট বিল্ড সেটিংসে "অনুলিপি চলাকালীন স্ট্রিপ ডিবাগ সিম্বলস" এ পরিবর্তন করতে পারি।

আরও বিশদ এই পোস্টটি দেখুন


12
@ নবীনশানের উত্তরের একটি টিপস, একটি বাস্তব-বিশ্বের উদাহরণ এটি করবে atos -o myApp.app/Contents/MacOS/myApp 0x0000000100001f2c এবং আপনি পাবেন -[HUDWindow sizedHUDBackground] (in myApp) + 1197
loretoparisi

3
আপনি কোন ঠিকানা ব্যবহার করেন, যদিও? লগগুলিতে প্রতিটি ফাংশনের পরে ঠিকানাগুলির দুটি কলাম থাকে এবং দ্বিতীয়টিতে একটি + এবং কোনও ধরণের অফসেট থাকে। 0x332da010 0x332d9000 + 4112.
অস্কার

7
@ অস্কারগোল্ডম্যান দ্বিতীয় ঠিকানা যেমন: - 0x332da010 0x332d9000 + 4112. 0x332d9000 ব্যবহার করুন।
নবীন শান

4
এছাড়াও, যদি ঠিকানা ছাড়াই ব্যবহার করা হয় তবে এটি আপনাকে একের পর এক জমা দেওয়ার মাধ্যমে একাধিক অবস্থান বিশ্লেষণ করার অনুমতি দেয়।
পল আর্দেলিয়ানু

42
এই উত্তরের সাথে একাধিক সমস্যা রয়েছে: ১. এটি কেবল তখনই কাজ করতে পারে যদি অ্যাপ্লিকেশন বাইনারিটিতে প্রতীক না ছড়িয়ে থাকে। এবং ডিফল্টরূপে রিলিজ বিল্ডগুলি সেগুলি ছিনিয়ে নিতে পারে। ২. প্রতীকগুলি উপলভ্য থাকলেও এটি কখনও লাইন নম্বরটি প্রদর্শন করবে না। কেবলমাত্র ডিএসওয়াইএমের সাথে প্রতীকীকরণ এটি সরবরাহ করবে। ৩. আপনি কেবল স্ট্যাক ট্রেসে প্রদর্শিত মেমরি ঠিকানাটি ব্যবহার করতে পারবেন না, অ্যাপটি লোড হওয়া শুরু মেমরি ঠিকানার ঠিকানার বিরুদ্ধে ঠিকানাটি স্বাভাবিক করতে হবে। : আরো বিস্তারিত এই উত্তরটি দেখুন stackoverflow.com/questions/13574933/...
Kerni

173

ক্র্যাশ লগের প্রতীক হিসাবে এই উত্তরগুলি এখানে পড়ার পরে (এবং শেষ পর্যন্ত সফল) আমি মনে করি যে এখানে কিছু পয়েন্ট নিখোঁজ রয়েছে যা প্রতীকী ক্র্যাশের অনুরোধ কেন প্রতীকী আউটপুট উত্পাদন করে না তা নির্ধারণ করার জন্য এটি গুরুত্বপূর্ণ important

ক্র্যাশ লগের প্রতীক হিসাবে 3 টি সম্পদ একসাথে ফিট করতে হবে:

  1. ক্র্যাশ লগ ফাইল নিজেই (অর্থাত্ example.crash), হয় এক্সকোডের সংগঠক থেকে রফতানি হয়েছে বা আইটিউনস কানেক্ট থেকে প্রাপ্ত হয়েছে।
  2. .appপ্যাকেজ (অর্থাত example.app) যে নিজেই ক্র্যাশ লগ একাত্মতার অ্যাপ্লিকেশন বাইনারি ধারণ করে। আপনার যদি .ipaপ্যাকেজ থাকে (অর্থাত্ example.ipa) তবে আপনি .appপ্যাকেজটি আনজিপ করে .ipa(যেমন unzip example.ipa) প্যাকেজটি বের করতে পারবেন । এরপরে .appপ্যাকেজটি নিষ্ক্রিয় অবস্থায় থাকেPayload/ ফোল্ডারে থাকে।
  3. .dSYMপ্যাকেজ ডিবাগ চিহ্ন ধারণকারী (অর্থাত example.app.dSYM)

প্রতীক শুরু করার আগে আপনার যাচাই করা উচিত ar সমস্ত নিদর্শনগুলি মিলছে কিনা, যার অর্থ ক্র্যাশ লগটি আপনার কাছে থাকা বাইনারি সম্পর্কিত এবং ডিবাগ প্রতীকগুলি সেই বাইনারি তৈরির সময় উত্পাদিত হয়েছে।

প্রতিটি বাইনারি একটি ইউইউডি দ্বারা উল্লেখ করা হয় যা ক্র্যাশ লগ ফাইলে দেখা যায়:

...
Binary Images:
0xe1000 -    0x1f0fff +example armv7  <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example
0x2febf000 - 0x2fedffff  dyld armv7s  <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld
...

এই নির্যাস সালে ক্র্যাশ লগ UUID সঙ্গে একটি অ্যাপ্লিকেশন বাইনারি ইমেজ নামে example.app/example জন্যে aa5e633efda8346cab92b01320043dc3

আপনি বামনডাম্পের সাথে বাইনারি প্যাকেজের ইউআইডি পরীক্ষা করতে পারেন:

dwarfdump --uuid example.app/example
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example

এর পরে আপনার যা ডিবাগ প্রতীকগুলিও সেই বাইনারিটির অন্তর্ভুক্ত তা পরীক্ষা করা উচিত:

dwarfdump --uuid example.app.dSYM
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example

এই উদাহরণে সমস্ত সম্পদ একসাথে ফিট করে এবং আপনার স্ট্যাকট্র্যাসের প্রতীক করতে সক্ষম হওয়া উচিত।

থেকে কার্যধারা symbolicatecrashস্ক্রিপ্ট:

এক্সকোড ৮.৩ এ আপনার মাধ্যমে স্ক্রিপ্টটি চালু করা উচিত

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log

এটি সেখানে না থাকলে আপনি find . -name symbolicatecrashএটি খুঁজে পেতে আপনার Xcode.app ডিরেক্টরিতে চালাতে পারেন।

আপনি দেখতে পাচ্ছেন যে এখানে আর কোনও পরামিতি দেওয়া হয়নি। সুতরাং স্ক্রিপ্টটি স্পটলাইট অনুসন্ধান চালিয়ে আপনার অ্যাপ্লিকেশন বাইনারি এবং ডিবাগ প্রতীকগুলি সন্ধান করতে হবে। এটি একটি নির্দিষ্ট সূচক নামে ডাবল প্রতীক অনুসন্ধান করে com_apple_xcode_dsym_uuids। আপনি এই অনুসন্ধানটি নিজেই করতে পারেন:

mdfind 'com_apple_xcode_dsym_uuids = *'

রেস্প।

mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"

প্রথম স্পটলাইট অনুরোধ আপনাকে সমস্ত ইনডেক্সড ডিএসওয়াইএম প্যাকেজ দেয় এবং দ্বিতীয়টি আপনাকে .dSYMনির্দিষ্ট ইউআইডি সহ প্যাকেজ দেয় । স্পটলাইট যদি আপনার .dSYMপ্যাকেজটি না খুঁজে পায় তবে তাও symbolicatecrashপাবে না। আপনি যদি এই সমস্ত স্টাফ করেন তবে আপনার একটি সাবফোল্ডারে~/Desktop স্পটলাইটের সবকিছু খুঁজে পেতে সক্ষম হবেন।

যদি symbolicatecrashআপনার .dSYMপ্যাকেজটি খুঁজে পায় তবে নীচের মতো একটি লাইন থাকা উচিত symbolicate.log:

@dsym_paths = ( <SOME_PATH>/example.app.dSYM/Contents/Resources/DWARF/example )

আপনার .appপ্যাকেজটি সন্ধানের জন্য নীচের মত একটি স্পটলাইট অনুসন্ধান সন্ধান করা হয়েছে symbolicatecrash:

mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'example.app' || kMDItemDisplayName == 'example' || kMDItemDisplayName == 'example.app')"

যদি symbolicatecrashআপনার .appপ্যাকেজটি খুঁজে পায় তবে নীচের এক্সট্রাক্টটি এখানে থাকতে হবে symbolicate.log:

Number of symbols in <SOME_PATH>/example.app/example: 2209 + 19675 = 21884
Found executable <SOME_PATH>/example.app/example
-- MATCH

যদি এই সমস্ত সংস্থানগুলি পাওয়া যায় symbolicatecrashতবে আপনার ক্র্যাশ লগের প্রতীকী সংস্করণটি মুদ্রণ করা উচিত।

যদি না হয় তবে আপনি সরাসরি আপনার ডিএসওয়াইএম এবং। অ্যাপ্লিকেশনগুলিতে পাস করতে পারেন।

symbolicatecrash -v --dsym <SOME_PATH>/<App_URI>.app.dSYM/<APP_NAME>.app.dsym <CRASHFILE> <SOME_OTHER_PATH>/<APP_NAME>.app/<APP_NAME> > symbolicate.log

দ্রষ্টব্য: প্রতীকী ব্যাকট্রেস টার্মিনালে আউটপুট হবে না symbolicate.log


আমি No crash report version in testlog.crash at /usr/bin/symbolicatecrash line 921.
পেয়েছি

1
এটি সত্যিই সহায়ক ছিল! আমার ক্ষেত্রে .app ফাইলটির এক্সিকিউটেবল নামের চেয়ে আলাদা নাম রয়েছে (কেন জানি না তবে এটি এইভাবে এক্সকোড দিয়ে তৈরি করা হয়েছে)। এক্সকোড সংরক্ষণাগারে .app ফাইলটির নাম পরিবর্তন করার পরে, প্রতীকী কাজটি করেছে।
হরিসান

28
এটি একটি দুর্দান্ত ব্যাখ্যা এবং শীর্ষ উত্তর আইএমও হওয়া উচিত, আপনাকে ধন্যবাদ। নোট আপনি আপনার সেট করতে থাকতে পারে DEVELOPER_DIRস্ক্রিপ্ট অভিযোগ যদি সম্পর্কে এটা এত পছন্দ এনভায়রনমেন্ট ভেরিয়েবল: export DEVELOPER_DIR=`xcode-select --print-path` । আমি এই লাইনটি আমার সাথে যুক্ত করেছি ~/.bash_profileস্ট্যাকওভারফ্লো.com
এলিয়ট

1
লক্ষ্য করুন Xcode 5, এই থেকে সরানো হয়েছে: <PATH_TO_Xcode.app> /Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/Current/Resources/symbolicatecrash
ইলিয়ট

1
প্রতীকী ক্র্যাশের বেশ কয়েকটি সহায়ক বিকল্প রয়েছে। <SYMBOL_PATH> Additional search paths in which to search for symbol rich binaries -o | --output <OUTPUT_FILE> The symbolicated log will be written to OUTPUT_FILE. Defaults to "-" (i.e. stdout) if not specified -d | --dsym <DSYM_BUNDLE> Adds additional dSYM that will be consulted if and when a binary's UUID matches (may be specified more than once)
benuuu

115

এক্সকোডের সর্বশেষতম সংস্করণ (৩.২.২) এর সাহায্যে আপনি এক্সকোড সংগঠকের ডিভাইস লগ বিভাগে যে কোনও ক্র্যাশ প্রতিবেদনকে টেনে নিয়ে যেতে পারেন এবং সেগুলি স্বয়ংক্রিয়ভাবে আপনার জন্য প্রতীকী হয়ে যাবে। আমি মনে করি আপনি বিল্ড অ্যান্ড আর্কাইভ (এক্সকোড ৩.২.২ এরও একটি অংশ) ব্যবহার করে অ্যাপের সেই সংস্করণটি তৈরি করলে এটি সেরা কাজ করে


3
এটি কেবল এক্সকোড 4 এর সাথে কাজ করছে না, একটি নতুন ইনস্টল। একটি নতুন বাগ বলে মনে হচ্ছে :(
অ্যাডাম

1
আমি নিশ্চিত না যে এটি আপনার একই সমস্যাটি সমাধান করে কিনা, তবে কেউ github.com/nskboy/symbolicatecrash- ফিক্স ওয়াইএমএমভি :) প্রতীকী স্ক্রিপ্ট প্যাচ করেছেন :)
অ্যালান রজার্স

2
এই টিপটি এক্সকোড ৪.২ এর সাথে কাজ করে। অর্গানাইজারের ডিভাইস লগগুলিতে ক্রাশলোগগুলি রাখুন। পুনঃসূচনা করুন সংগঠক প্রতীকী ক্র্যাশ লগ পাবেন !!! ধন্যবাদ।
harshit2811

2
ক্র্যাশ লগ পাওয়ার জন্য যখন আমি অন্য কম্পিউটার থেকে একটি সংরক্ষণাগার ফাইল আমদানি করি তখন এটি আমার কাছ থেকে কাজ করে না। :( এই কারণে আমাকে ম্যানুয়ালি ফাইলটি প্রতীকী করতে হয়েছিল। আপনি কীভাবে এখানে প্রতীকটি করবেন সে সম্পর্কে পদক্ষেপগুলি খুঁজে পেতে পারেন: আইফোন এসডিকে: সিম্বলিকক্র্যাশ.শ কোথায় অবস্থিত?
স্যাম

3
আইটিউনস কানেক্ট থেকে ক্র্যাশ প্রতিবেদন ডাউনলোড করে আমার জন্য কাজ করবেন না।
দিমিত্রি

72

আমি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে এটি সফলভাবে করেছি।

পদক্ষেপ 1: ডেস্কটপে একটি ফোল্ডার তৈরি করুন, আমি এটির নাম "ক্র্যাশরেপোর্ট" দিয়ে দেব এবং এতে তিনটি ফাইল ("MYapp.app", "MyApp.app.dSYM", "MYapp_2013-07-18.crash") রেখেছি।

পদক্ষেপ 2: ফাইন্ডারটি খুলুন এবং অ্যাপ্লিকেশনগুলিতে যান, যেখানে আপনি এক্সকোড অ্যাপ্লিকেশনটি পাবেন, এটিতে ডান ক্লিক করুন এবং "সহজ প্যাকেজ বিষয়বস্তু দেখান" ক্লিক করুন, এর পরে এই সাধারণ পথটি অনুসরণ করুন। "বিষয়বস্তু-> বিকাশকারী-> প্ল্যাটফর্ম-> আইফোনএস.প্ল্যাটফর্ম-> বিকাশকারী> গ্রন্থাগার-> প্রাইভেট ফ্রেমওয়ার্কস -> ডিটি ডিভাইসকিট.ফ্রেমেওয়ার্ক -> সংস্করণ- > এ-> সংস্থানসমূহ"

অথবা

"সামগ্রী-> বিকাশকারী-> প্ল্যাটফর্ম-> আইফোনএস.প্ল্যাটফর্ম-> বিকাশকারী-> গ্রন্থাগার-> প্রাইভেট ফ্রেমওয়ার্কস -> ডিটি ডিভাইসকিটবেস.ফ্রেমওয়ার্ক -> সংস্করণ- > এ-> সংস্থানসমূহ"

অথবা

এক্সকোড 6 এর ওপরের পাথের জন্য অ্যাপ্লিকেশনস / এক্সকোড.এপ / সামগ্রী / শেয়ার্ড ফ্রেমওয়ার্কস / ডিটিডিভাইসকিটবেস.ফ্রেমওয়ার্ক / সংস্করণ / এ / সংস্থানসমূহ

যেখানে আপনি "সিম্বলিকেটক্র্যাশ" ফাইলটি খুঁজে পান, এটি অনুলিপি করুন এবং এটি "ক্র্যাশরেপোর্ট" ফোল্ডারে পেস্ট করুন।

পদক্ষেপ 3: টার্মিনালটি চালু করুন, এই 3 কমান্ডটি চালান

  1. সিডি / ব্যবহারকারী / ম্যাক 38 / ডেস্কটপ / ক্র্যাশ রিপোর্ট এবং এন্টার বোতাম টিপুন

  2. DEVELOPER_DIR = "/ অ্যাপ্লিকেশনস / Xcode.app / সামগ্রী / বিকাশকারী" রফতানি করুন এবং এন্টার টিপুন

  3. ./symbolicatecrash -A -v MYapp_2013-07-18.c ক্র্যাশ MyApp.app.dSYM এবং এখনই এটি সম্পন্ন করুন এন্টার টিপুন .. (দ্রষ্টব্য: 6.4 এর কাছাকাছি সংস্করণ বা তার পরে -A বিকল্প নেই - কেবল এটি ছেড়ে দিন)।

3
ডিটিএস সার্ভিসকেট অ্যাপ্লিকেশনস / এক্সকোড.এপ / সামগ্রী / অংশীদারি ফ্রেমওয়ার্কগুলিতে দেখুন
রায়ান হিটনার

3
আপনাকে ধন্যবাদ ... 9 ই এপ্রিল, 2015 পর্যন্ত, এটাই আমার পক্ষে নির্দ্বিধায় কাজ করেছিল। একটি জিনিস, আমি Unknown option: Aপ্রতীকী
ক্র্যাশ

1
আমি আশা করি আমি এই উত্তরের হাজার পয়েন্ট দিতে পারতাম। এই বিষয়টিতে অনেকগুলি কীভাবে রয়েছে ... তবে এটি হ'ল সর্বনিম্ন স্তরে কাজ করে তাই এটি সর্বদা কাজ করে। সব ধাপে আঘাত করতে পিছনে ব্যথা হয় তবে যখন সমস্ত কিছু ব্যর্থ হয় তখন এটি কাজ করে।
চাদ রবিনসন

35

এক্সকোড ব্যবহার করে স্বয়ংক্রিয়ভাবে ক্র্যাশ প্রতিবেদনের প্রতীকী পদক্ষেপগুলি:

এক্সকোড 9 এর জন্য আপডেট করা

  1. কোনও আইওএস ডিভাইসকে আপনার ম্যাকের সাথে সংযুক্ত করুন (হ্যাঁ একটি শারীরিক, হ্যাঁ আমি জানি এটি বোকা)

  2. "উইন্ডো" মেনু থেকে "ডিভাইসগুলি" চয়ন করুন এখানে চিত্র বর্ণনা লিখুন

  3. বামদিকে আপনার ডিভাইস এবং ডানদিকে ডিভাইস লগ দেখুন ক্লিক করুন এখানে চিত্র বর্ণনা লিখুন

  4. অপেক্ষা করুন। এটি প্রদর্শিত হতে এক মিনিট সময় নিতে পারে। হতে পারে Command-Aতখন Deleteএটির গতি বাড়বে।

  5. ক্রিটিক্যাল অনথিভুক্ত পদক্ষেপ: ক্র্যাশ প্রতিবেদন যে আপনার কাছ থেকে iTunesConnect থেকে পেয়েছেন নামান্তর.txtকরতে এক্সটেনশন.crashএক্সটেনশন

  6. বাম দিকে ওই অঞ্চলে ক্র্যাশ প্রতিবেদনটি টেনে আনুন এখানে চিত্র বর্ণনা লিখুন

এবং তারপরে এক্সকোড ক্র্যাশ প্রতিবেদনের প্রতীক এবং ফলাফলগুলি প্রদর্শন করবে।

সূত্র: https://developer.apple.com/library/ios/technotes/tn2151/_index.html


1
এটি সরকারী অ্যাপল পদ্ধতি। উত্তর হওয়া উচিত।
Giammy

2
ধন্যবাদ, আমি এখন ছবি যুক্ত করছি। সুপার অন্তর্ভুক্ত পদক্ষেপ অন্তর্ভুক্ত। আমি লাল টেক্সটটির একটি গিট তৈরি করার এবং সেখানে এটি স্প্লিক করে দেওয়ার বিষয়ে ভেবেছিলাম যাতে এটি সত্যই বাইরে যায়। তারপরে আমি সে সম্পর্কে চিন্তাভাবনা বন্ধ করে দিয়েছি।
উইলিয়াম এন্টারিকেন

1
ধন্যবাদ! অন্যান্য উত্তরের কোনওটিই আসলে বলে না যে আপনি যে ডিভাইসটি ব্যবহার করছেন তার ক্র্যাশ ঘটেছিল এমন ডিভাইস (বা এমনকি ডিভাইসের ধরণ) হওয়ার দরকার নেই।
galactikuh

দ্রুত নোট, কারণ আমার জন্য এটি পুনরায় প্রতীক হবে না। আমাকে অর্গানাইজারটিও খুলতে হয়েছিল, সংরক্ষণাগারগুলির বিল্ডটি ক্লিক করতে হবে, ডাউনলোড ডিবাগ প্রতীকগুলি ক্লিক করুন। তারপরে আমি ডিভাইস লগ ভিউতে আবার প্রতীকী করতে পারি। এটি প্রত্যাখ্যানিত পর্যালোচনার পরে অ্যাপল থেকে ডাউনলোড করা ক্র্যাশ লগের জন্য ছিল।
গ্রেগ থেইগিক

28

আমি আমার অ্যাপ্লিকেশনগুলিতে এয়ারব্রেক ব্যবহার করি, যা দূরবর্তী ত্রুটি লগিংয়ের পক্ষে মোটামুটি ভাল কাজ করে।

ব্যাকট্রেসের যদি এটির প্রয়োজন হয় তবে আমি কীভাবে এটসের সাথে তাদের প্রতীকী করব:

  1. এক্সকোডে (৪.২) আয়োজকের কাছে যান, সংরক্ষণাগারটিতে ডান ক্লিক করুন যা থেকে .ipa ফাইল উত্পন্ন হয়েছিল।

  2. টার্মিনালে, উদাহরণস্বরূপ সিডিতে এক্সক্রাচিতে প্রবেশ করুনMyCoolApp 10-27-11 1.30 PM.xcarchive

  3. নিম্নলিখিত লিখুন atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp' (একক উদ্ধৃতি ভুলবেন না)

  4. আমি আমার ডাকে আমার প্রতীকটি অন্তর্ভুক্ত করি না। আপনি যা পান তা হ'ল খালি লাইনে একটি ব্লক কার্সার।

  5. তারপরে আমি আমার ব্লক কার্সারে আমার সিম্বল কোডটি কপি / পেস্ট করব এবং এন্টার টিপব আপনি এরকম কিছু দেখতে পাবেন:

    -[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)

  6. আপনি একটি ব্লক কার্সারে ফিরে এসেছেন এবং আপনি অন্যান্য চিহ্নগুলিতে পেস্ট করতে পারেন।

প্রথম বিটটিতে পুনরায় প্রবেশ না করে আপনার আইটেমটি ব্যাকট্রেসের মাধ্যমে যেতে সক্ষম হওয়াই একটি দুর্দান্ত সময় সাশ্রয়ী।

উপভোগ করুন!


28

প্রতীকী ক্র্যাশ চালানোর আগে আমি একই ডিরেক্টরিতে dsym, অ্যাপ বান্ডেল এবং ক্র্যাশ লগ একসাথে রেখেছি

তারপরে আমি চলমান প্রতীকক্র্যাশকে সহজ করার জন্য আমার। প্রোফাইলে সংজ্ঞায়িত এই ফাংশনটি ব্যবহার করি:

function desym
{
    /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}

সেখানে যুক্ত যুক্তিগুলি আপনাকে সাহায্য করতে পারে।

কমান্ডটি চালিয়ে স্পটলাইট আপনার ডিসম ফাইলগুলি "দেখে" তা নিশ্চিত করতে পরীক্ষা করতে পারেন:

mdfind 'com_apple_xcode_dsym_uuids = *'

আপনার ডিরেক্টরিতে যে ডিএসএম রয়েছে তা সন্ধান করুন।

দ্রষ্টব্য: সর্বশেষতম এক্সকোড হিসাবে, আর কোনও বিকাশকারী ডিরেক্টরি নেই। আপনি এখানে এই ইউটিলিটিটি খুঁজে পেতে পারেন:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Vers আয়ন / এ / সম্পদ / symbolicatecrash


1
আমি এমডিফাইন্ড আউটপুটটি দেখেছি এবং স্পষ্টলাইট দ্বারা ডিএসওয়াইএম ফাইলটি অবশ্যই দেখা যায়। তবে প্রতীকী ক্র্যাশ স্ক্রিপ্ট এখনও ক্র্যাশ রিপোর্টের থেকে আলাদা কিছু আউটপুট দেয় না। এমনকি আপনার সরবরাহ করা যুক্তিগুলি ব্যবহার করে।
জেসারিন

স্ক্রিপ্টটির শুরুতে কিছু সতর্কতা পাঠানো উচিত যদি এটি ডাইসেমটি না খুঁজে পায় - আপনি কি এটির জন্য সন্ধান করতে পারেন এবং এটি কী বলে তা দেখতে পারেন?
কেন্ডল হেলস্টেটার জেলনার

এছাড়াও, "যোগ করার চেষ্টা করুন।" কমান্ডের পরে, সুতরাং এটি হবে "সিম্বিকেটিক ক্র্যাশ-এ-ভি মাই অ্যাপ্লিকেশন। ক্র্যাশলগ।" । এটি এটি যদি ইতিমধ্যে এটি না করে তবে এটি বর্তমান ডিরেক্টরিটিতে সন্ধান করতে বাধ্য করে।
কেন্ডাল হেলমেস্টেটার জেলনার

"এক্সিকিউট করতে পারবেন না" / ইউএসআর / বিন / এক্সকোড-সিলেক্ট করুন ": / ডেভেলপার / প্ল্যাটফর্ম / আইফোনস.প্ল্যাটফর্ম / ডেভেলপার / লাইব্রেরি / এক্সকোড / প্লাগ- ইনস / আইফোনরেমোটে ডিভাইস.এক্সকোডপ্লাগিন / কনটেন্টস / রিসোর্স / প্রতীকীক্রাশ লাইন 49. "
বিপাপা

ওহো, দৃশ্যত সেখানে যে অন্য কাজেই প্রশ্ন আসে সেই stackoverflow.com/questions/1859852/...
bpapa

21

এক্সকোড 6.1.1 এর জন্য কেবল একটি সহজ এবং আপডেট হওয়া উত্তর।

STEPS টি

1.Xcode> উইন্ডো> ডিভাইস।

ডিভাইস বিভাগের অধীনে ডিভাইসের তালিকা থেকে একটি ডিভাইস নির্বাচন করুন।

3. ডিভাইস লগগুলি দেখুন নির্বাচন করুন।

4. সমস্ত লগ বিভাগের অধীনে আপনি সরাসরি রিপোর্ট ক্র্যাশটি ড্রপ করতে পারেন

5.এক্সকোড স্বয়ংক্রিয়ভাবে আপনার জন্য ক্র্যাশ প্রতিবেদনের প্রতীক হবে।

You. আপনি আপনার ক্র্যাশ প্রতিবেদনে উল্লিখিত তারিখ / সময়ের সাথে তার তারিখ / সময়ের সাথে মিল রেখে প্রতীকী ক্র্যাশ প্রতিবেদনটি খুঁজে পেতে পারেন।


3
ক্র্যাশ রিপোর্ট যা আমি অ্যাপল রেজোলিউশন কেন্দ্র থেকে ডাউনলোড করেছি তা সাধারণত .txt এর এক্সটেনশন থাকে। তাদের ক্র্যাশে নতুন নামকরণ মনে রাখবেন, অন্যথায় ডিভাইস লগগুলি এগুলি যুক্ত করতে অস্বীকার করতে পারে। আমার বর্তমান এক্সকোড 6.3.1
টনি

3
এটি সরকারী অ্যাপল পদ্ধতি। উত্তর হওয়া উচিত। অ্যাপলের লিঙ্ক: প্রযুক্তিগত নোট টিএন 2151: আইওএস অ্যাপ্লিকেশন ক্র্যাশ প্রতিবেদনগুলি বোঝা এবং বিশ্লেষণ করা
জিমি

ক্রাশটি অ্যাপল / আইটিউনস কানেক্ট থেকে এসে থাকলে আমরা কীভাবে এটি করব? সুতরাং অন্য কথায় আমরা ক্র্যাশটি ঘটেছিল এমন ডিভাইসটি আসলে জানি না বা নেই?
galactikuh

14

যদিও আমি এখন কয়েক বছর ধরে অ্যাপ্লিকেশনগুলি বিকাশ করছিলাম, এটি আমার প্রথমবারের মতো বাইনারি ডিবাগ করছিল এবং আমার মনে হয়েছিল একটি সম্পূর্ণ NOOB নির্ধারণ করছে যে সমস্ত ফাইলগুলি কোথায় ছিল? * * অ্যাপ * .ডিএসওয়াইএম এবং ক্র্যাশ লগগুলি কোথায়? এটি বের করার জন্য আমাকে একাধিক পোস্ট পড়তে হয়েছিল। ছবিটি হাজার শব্দের মূল্যবান এবং আমি আশা করি এই পোস্টটি ভবিষ্যতে অন্য কাউকে সহায়তা করবে।

1- প্রথমে itunesconnect এ যান এবং আপনার ক্র্যাশ লগগুলি ডাউনলোড করুন। দ্রষ্টব্য: বেশিরভাগ ক্ষেত্রেই আপনি "প্রতিবেদনটি দেখানোর জন্য খুব কয়েকটি প্রতিবেদন জমা দেওয়া হয়েছে" এর মতো কিছু পেতে পারেন। মূলত পর্যাপ্ত ব্যবহারকারীরা অ্যাপলের কাছে ক্র্যাশ লগ প্রতিবেদন জমা দেয়নি সে ক্ষেত্রে আপনি এই মুহুর্তে খুব বেশি কিছু করতে পারবেন না।

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

2- এখন আপনি যদি আপনার কোডটি পরিবর্তন না করে যেহেতু আপনি আপনার বাইনারিটি অ্যাপলের কাছে জমা দিয়েছিলেন তখন সেই প্রকল্পের জন্য এক্সকোড চালু করুন এবং পণ্য -> সংরক্ষণাগারটি আবার করুন। অন্যথায় কেবল আপনার সর্বশেষ জমা দেওয়া বাইনারিটি সন্ধান করুন এবং এটিতে ডান ক্লিক করুন।

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


8

এক্সকোড ৪.২.১ এ, অর্গানাইজারটি খুলুন , তারপরে লাইব্রেরি / ডিভাইস লগগুলিতে যান এবং আপনার। ক্র্যাশ ফাইলটিকে ক্র্যাশ লগগুলির তালিকায় টেনে আনুন। এটি আপনার জন্য কয়েক সেকেন্ড পরে প্রতীকী হবে।

নোট করুন যে আপনাকে অবশ্যই Xcode এর একই উদাহরণটি ব্যবহার করতে হবে যে মূল বিল্ডটি সংরক্ষণাগারভুক্ত ছিল (অর্থাত্ আপনার বিল্ডের জন্য সংরক্ষণাগারটি অবশ্যই অর্গানাইজরে থাকতে হবে )।


8

এক্সকোড 4 ব্যবহার করে, কাজটি আরও সহজ:

  • ওপেন অর্গানাইজার ,
  • লাইব্রেরিতে ক্লিক করুন | বাম কলামে ডিভাইস লগইন করুন
  • স্ক্রিনের নীচে " আমদানি " বোতামে ক্লিক করুন ...

এবং voilà। লগ ফাইলটি আপনার জন্য স্বয়ংক্রিয়ভাবে আমদানীকৃত এবং প্রতীকী হয়। আপনি প্রদত্ত এক্সকড -> পণ্য -> সংরক্ষণাগার ব্যবহার করে বিল্ডটি সংরক্ষণাগারভুক্ত করেছেন ।


1
যথেষ্ট অদ্ভুত, আমদানির কোনও প্রভাব নেই। .App, .dSYM এবং। ক্র্যাশ স্থাপন এবং তারপরে। ক্র্যাশ ফাইলটিতে প্রতীকীক্র্যাশ চালানো (কোনও অতিরিক্ত যুক্তি ছাড়াই) যদিও কাজ করেছে (এক্সকোড 4)
রাশিয়ান

7

Magন্দ্রজালিক এক্সকোড সংগঠকটি আমার অ্যাপ্লিকেশনটিকে প্রতীকী করার মতো thatন্দ্রজালিক নয়। আমি ব্যর্থ অ্যাপ জমা দিয়ে অ্যাপল থেকে ফিরে পেয়েছি এমন ক্র্যাশ রিপোর্টের জন্য আমি কোনও চিহ্নই পাইনি।

আমি কমান্ড-লাইনটি ব্যবহার করে চেষ্টা করেছি, ক্র্যাশ প্রতিবেদনটিকে .app ফাইলের (একইভাবে আমি দোকানে জমা দিয়েছি) এবং .dSYM ফাইলের মতো একই ফোল্ডারে রেখেছি:

$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"

এটি কেবলমাত্র আমার অ্যাপ্লিকেশনের জন্য প্রতীক সরবরাহ করেছিল এবং মূল ভিত্তি কোডটি নয়, তবে অর্গানাইজার আমাকে যে নম্বর ডাম্প দিচ্ছে তার চেয়ে ভাল ছিল এবং আমার অ্যাপ্লিকেশনটির ক্র্যাশটি খুঁজে পেতে এবং তা ঠিক করতে আমার পক্ষে যথেষ্ট ছিল। কেউ যদি ফাউন্ডেশন প্রতীক পেতে এটি কীভাবে প্রসারিত করতে জানেন তবে তা প্রশংসিত হবে।


কোর ফাউন্ডেশন ডিএসওয়াইএমের জন্য, একজন (চীনা হতে পারে) লোক তার শেয়ার করা গুগল ড্রাইভে ডিএসওয়াইএম আপলোড করেছে, কেবল এটি ডাউনলোড করুন এবং "ডিভাইস সমর্থিত" ফোল্ডারে ফেলে দিন এবং এটি সমাধান হয়ে যাবে। github.com/Zuikyo/iOS-Sstm- সিম্বলস
হারুনগা

6

আমার ক্ষেত্রে, আমি ক্রাশের প্রতিবেদনগুলি মেল থেকে সরাসরি সংগঠকের কাছে টেনে আনছিলাম। কোনও কারণে, এটি ক্র্যাশ প্রতিবেদনগুলিকে প্রতীকী হওয়া থেকে বাধা দিয়েছে (আমি কেন তা জানতে আগ্রহী)।

প্রথমে ডেস্কটপে ক্র্যাশ প্রতিবেদনগুলি অনুলিপি করা এবং তারপরে সেগুলি সেখান থেকে টেনে এনে অর্গানাইজারের কাছে এগুলি সঠিকভাবে প্রতীকী হয়ে উঠেছে।

খুব নির্দিষ্ট ক্ষেত্রে, আমি জানি। তবে আমি ভেবেছিলাম আমি কেবল ভাগ করে নেব।


আমি ধারণা করি স্পটলাইটের সাথে এর কিছু থাকতে পারে। আয়োজক আপনার লগগুলি স্পটলাইট দ্বারা সূচিযুক্ত করা হয়নি এমন কোনও স্থানে রয়েছে কি?
জাসারিন

4

এখানে প্রতীকী ক্র্যাশ নিয়ে আমার আর একটি সমস্যা রয়েছে - এটি অ্যাপ্লিকেশানগুলির সাথে কাজ করবে না যেগুলির বান্ডলে ফাঁকা স্থান রয়েছে (যেমন 'টেস্ট অ্যাপ.এপ')। দ্রষ্টব্য আমি মনে করি না যে তারা জমা দেওয়ার সময় তাদের নামে আপনার ফাঁকা স্থান থাকতে পারে যাতে আপনার যেকোন উপায়ে অপসারণ করা উচিত তবে আপনার যদি ইতিমধ্যে ক্র্যাশ হয়ে থাকে যা বিশ্লেষণের প্রয়োজন হয় তবে প্যাচ সিমেটিকেটক্র্যাশ (৪.৩ জিএম) যেমন:

240c240
<         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\"";
---
>         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\"";
251c251
<             my $cmd = "find \"$archive_path/Products\" -name $exec_name.app";
---
>             my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\"";

এটির মূল্যের জন্য, আমি এটিতে একটি রডার পূরণ করেছি এবং এটি [redacted] এ ঠিক করা হয়েছে
অ্যালাস্টার স্টুয়ার্ট

4

যারা এয়ারব্রেক ব্যবহার করছেন তাদের পক্ষে উপরে একটি দৃ response় প্রতিক্রিয়া রয়েছে তবে এটি টুইট করা ছাড়া আমার পক্ষে কাজ করবে না:

কিছু মেমরি ঠিকানার জন্য কাজ করে তবে অন্যদের নয়, নিশ্চিত কেন নয় ...

  • ডেস্কটপে বা যে কোনও জায়গায় নতুন দির তৈরি করুন
  • এক্সকোড সংগঠক প্রশ্নে সংরক্ষণাগার সন্ধান করুন
  • ফাইন্ডারে প্রকাশ করতে ডাবল আলতো চাপুন
  • বান্ডিল সামগ্রী দেখতে ডাবল আলতো চাপুন
  • .DSYM ফাইল এবং .app ফাইলটি নতুন dir এ অনুলিপি করুন
  • সিডি নতুন দির
  • এই কমান্ডটি চালান: atos -arch armv7 -o 'Vimeo.app' / 'Vimeo'
  • টার্মিনাল একটি ইন্টারেক্টিভ পদক্ষেপ প্রবেশ করবে
  • মেমরি ঠিকানাতে আটকান এবং এন্টার টিপুন, এটি পদ্ধতির নাম এবং লাইন নম্বর আউটপুট দেবে
  • বিকল্পভাবে, এই কমান্ডটি প্রবেশ করুন: atos -arch armv7 -o 'Vimeo.app' / 'Vimeo' কেবল একটি ঠিকানার জন্য তথ্য পেতে

4

আমার জন্য যে সংমিশ্রণটি কাজ করেছিল তা হ'ল:

  1. যেখানে ক্র্যাশ প্রতিবেদন ছিল সেই ডিরেক্টরিতে ডিএসওয়াইএম ফাইলটি অনুলিপি করুন
  2. অ্যাপ্লিকেশনযুক্ত আইপা ফাইলটি আনজিপ করুন ('মাই অ্যাপ.আইপিএ আনজিপ করুন')
  3. ক্রাশ রিপোর্ট এবং প্রতীক ফাইলের মতো একই ফোল্ডারে ফলাফল বিস্ফোরিত পেডলোড থেকে অ্যাপ্লিকেশন বাইনারি অনুলিপি করুন ("MyApp.app/MyApp" এর মতো কিছু)
  4. এক্সকোডের সংগঠকের মধ্যে থেকে ক্র্যাশ প্রতিবেদনটি আমদানি করুন বা পুনরায় প্রতীক করুন

অ্যাটোস ব্যবহার করে আমি ক্র্যাশ প্রতিবেদনে থাকা ঠিকানা এবং অফসেটগুলি সহ সঠিক প্রতীক তথ্যটি সমাধান করতে সক্ষম হয়েছি। যখন আমি এটি করেছি, আমি আরও অর্থপূর্ণ কিছু দেখছি এবং এটি একটি বৈধ স্ট্যাক ট্রেস বলে মনে হচ্ছে।


3

এটি সঠিকভাবে চালিত হওয়ার জন্য আমাকে প্রতীকী ক্র্যাশ স্ক্রিপ্টটির প্রচুর হ্যাকিং করতে হয়েছিল।

আমি যতদূর বলতে পারি, সিম্বলিকেটক্র্যাশ এখনই। অ্যাপের জন্য .dsym হিসাবে একই ডিরেক্টরিতে থাকা প্রয়োজন। এটি। অ্যাপটি সনাক্ত করতে .dsym ব্যবহার করবে, তবে এটি চিহ্নগুলি সন্ধান করতে ব্যবহার করবে না।

এই প্যাচগুলি চেষ্টা করার আগে আপনার প্রতীকী ক্র্যাশের একটি অনুলিপি তৈরি করা উচিত যা এটি অস্তিত্বের মধ্যে দেখায়:

GetSymbolPathfor_dsymUuid ফাংশনে 212 লাইনের চারপাশে

212     my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);

ম্যাচগুলি ইউইউডি ফাংশনে প্রায় 265 লাইন

265             return 1;

1

এটি সহজ, অনেকগুলি অনুসন্ধানের পরে আমি পুরো ক্র্যাশ লগ ফাইলকে প্রতীকী করার জন্য পরিষ্কার পদক্ষেপ পেয়েছি।

  • একটি ফোল্ডারে .app, ক্রাশ_রেপোর্ট এবং ডিএসওয়াইএম ফাইলগুলি অনুলিপি করুন।
  • এক্সকোড দিয়ে ডিভাইসটি সংযুক্ত করুন
  • তারপরে উইন্ডোতে যান -> ডিভাইসগুলি নির্বাচন করুন -> ডিভাইসের লগগুলি দেখুন
  • তারপরে এই ডিভাইসটি নির্বাচন করুন, সমস্ত লগ মুছুন।
  • ডিগ্রি লগ বিভাগে আপনার ক্র্যাশটিকে টেনে আনুন এবং ফেলে দিন। এটি স্বয়ংক্রিয়ভাবে ক্র্যাশের প্রতীক হবে। রিপোর্টে ডান ক্লিক করুন এবং এটি এক্সপোর্ট করুন।

শুভ কোডিং,
রিয়াজ


সেরা ছোট এবং মিষ্টি উত্তর, এই উত্তরগুলিতে লেখা প্রতিটি পদক্ষেপ অনুসরণ করুন। বিকাশকারী / অ্যাপ্লিকেশন / লাইব্রেরি / কনটেন্ট / টেকনোটস / টিএন 2151/… আনসিম্বলিকেটেড এবং সম্পূর্ণ প্রতীকী এর মধ্যে পার্থক্য জানতে এই লিঙ্কটি অনুসরণ করুন।
নিনাদ কাম্বলি

1

আমি এমন স্ক্রিপ্ট পছন্দ করি যা আমার সমস্ত ক্র্যাশ লগের প্রতীকী হবে।

পূর্বশর্ত

একটি ফোল্ডার তৈরি করুন এবং সেখানে 4 টি জিনিস রাখুন:

  1. symbolicatecrash পার্ল স্ক্রিপ্ট - অনেকগুলি এসও উত্তর রয়েছে যা এটির অবস্থানটি বলে

  2. বিল্ডের সংরক্ষণাগারটি ক্র্যাশগুলির সাথে মেলে (এক্সকোড সংগঠক থেকে as সরল হিসাবে Show in Finderএবং অনুলিপি করে) [আমি নিশ্চিত নই যে এটি নেসেসেরি]

  3. সমস্ত xccrashpointপ্যাকেজ - (এক্সকোড অর্গানাইজারের কাছ থেকে Show in Finderyou আপনি ডিরেক্টরিতে সমস্ত প্যাকেজ অনুলিপি করতে পারেন বা একক এক্সসিআরসিপয়েন্টে আপনি প্রতীকী করতে চান)

  4. ডিরেক্টরিতে শর্ট স্ক্রিপ্ট যুক্ত করুন:

    #!/bin/sh
    
    echo "cleaning old crashes from directory"
    rm -P *.crash
    rm -P *.xccrashpoint
    rm -r allCrashes
    echo "removed!"
    echo ""
    echo "--- START ---"
    echo ""
    
    mkdir allCrashes
    mkdir symboledCrashes
    find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \;
    
    cd allCrashes
    for crash in *.crash; do
        ../symbolicatecrash $crash > ../symboledCrashes/V$crash
    done
    cd ..
    
    echo ""
    echo "--- DONE ---"
    echo ""

এই পান্ডুলিপি

আপনি যখন স্ক্রিপ্টটি চালাবেন, আপনি 2 ডিরেক্টরি পাবেন।

  1. allCrashes- সমস্ত সমস্ত ক্র্যাশগুলি xccrashpointসেখানে উপস্থিত থাকবে।

  2. symboledCrashes - একই ক্র্যাশ কিন্তু এখন সমস্ত চিহ্ন সহ।

  3. স্ক্রিপ্টটি চালানোর আগে আপনাকে পুরানো ক্র্যাশ থেকে ডিরেক্টরিটি পরিষ্কার করতে হবে না। এটি স্বয়ংক্রিয়ভাবে পরিষ্কার হবে। শুভকামনা!


1

আমি জানতে পেরেছি বেশিরভাগ প্রস্তাবিত বিকল্পগুলি সর্বশেষতম এক্সকোডে কাজ করে না (এক্সকোড 10 দিয়ে পরীক্ষিত)। উদাহরণস্বরূপ, এক্সকোড -> সংগঠক -> ডিভাইস লগস-ভিউতে আমার কোনও ভাগ্য টেনে আনেনি c ক্র্যাশ লগ।

আমি প্রতীক সরঞ্জামটি https://github.com/agentsim/Symbolicator ব্যবহার করার পরামর্শ দিচ্ছি

  • গিট ক্লোন সিম্বলিকেটর সংগ্রহস্থল এবং সংকলন এবং এক্সকোড দিয়ে চালান
  • । ক্র্যাশ ফাইল (ফাইলের ভিক্ষায় স্ট্যাক ট্রেস সহ ascii ফাইল) এবং একই অস্থায়ী ফোল্ডারে ক্র্যাশ রিলিজের সংরক্ষণাগারটি অনুলিপি করুন
  • ডক-তে প্রতীকীকরণ আইকনে। ক্র্যাশ ফাইলটি টেনে আনুন
  • 5-30 সেকেন্ডে প্রতীকী ক্র্যাশ ফাইলটি। ক্র্যাশ এবং .আরসার্চ হিসাবে একই ফোল্ডারে উত্পাদিত হয়

0

ক্র্যাশের প্রতীক হিসাবে, স্পটলাইট অবশ্যই আপনাকে .dSYM ফাইলটি সন্ধান করতে সক্ষম হবে যা আপনি অ্যাপলের কাছে বাইনারিটি জমা করেছিলেন একই সময়ে তৈরি হয়েছিল। যেহেতু এটিতে প্রতীক তথ্য রয়েছে, এটি যদি না পাওয়া যায় তবে আপনি ভাগ্যের বাইরে চলে যাবেন।


আপনি যদি প্রশ্নটি পড়ে থাকেন তবে আমি বলেছিলাম যে আমি বাইনারি জমা দেওয়ার সাথে সাথে তৈরি হওয়া মূল ডিএসওয়াইএম ফাইলটি সংরক্ষণ করেছি।
জাসারিন

0

আমি এখানে কিছুটা "কেবলমাত্র কাজ করে" বলে মনে হচ্ছে না তাই আমি কিছু তদন্ত করেছি এবং ফলাফলটি হ'ল:

সেট আপ করুন: কুইনসাইকিট ব্যাক এন্ড যা প্রতিবেদনগুলি গ্রহণ করে। কোনও প্রতীক সেট আপ করা হয়নি যেহেতু তারা এটিকে কাজ করার জন্য আমি কী পরামর্শ দিচ্ছি তা কী তা নির্ধারণ করতে শুরু করতে পারিনি।

সমাধান: সার্ভার থেকে ক্র্যাশ প্রতিবেদনগুলি অনলাইনে ডাউনলোড করুন। তাদের 'ক্র্যাশ' বলা হয় এবং ডিফল্টরূপে ~ / ডাউনলোড / ফোল্ডারে যায়। এই বিষয়টি মনে রেখে, এই স্ক্রিপ্টটি "সঠিক কাজটি করবে" এবং ক্র্যাশ প্রতিবেদনগুলি এক্সকোডে যাবে (সংগঠক, ডিভাইস লগগুলি) এবং প্রতীকটি সম্পন্ন হবে।

এই পান্ডুলিপি:

#!/bin/bash
# Copy crash reports so that they appear in device logs in Organizer in Xcode

if [ ! -e ~/Downloads/crash ]; then 
   echo "Download a crash report and save it as $HOME/Downloads/crash before running this script."
   exit 1
fi

cd ~/Library/Logs/CrashReporter/MobileDevice/
mkdir -p actx # add crash report to xcode abbreviated
cd actx

datestr=`date "+%Y-%m-%d-%H%M%S"`

mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash"

আপনি যদি কুইনকিকিট / পিএলসিআর ব্যবহার করেন তবে দুটি জিনিস করে আপনি এক্সকোড অর্গানাইজারে টানতে এবং ছাড়তে পারবেন এমন জিনিসগুলিকে স্বয়ংক্রিয় করা যায়।

প্রথমত, আপনাকে রিমোট স্ক্রিপ্ট অ্যাডমিন / ক্রিয়াকলাপি.এফপি p লাইন 202 সম্পাদনা করতে হবে। টাইমস্ট্যাম্পটি সঠিকভাবে পাওয়া যাবে বলে মনে হচ্ছে না, সুতরাং ফাইলটি 'ক্র্যাশ' নাম দিয়ে শেষ হবে যা এক্সকোড চিনতে পারে না (এটি কিছু চায় বিন্দু ক্রাশ):

header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');

দ্বিতীয়ত, QuincyKit BWCrashReportTextFormatter.m ~ লাইন 176, পরিবর্তন আইওএস পাশ @"[TODO]"থেকে @"TODO"প্রায় খারাপ অক্ষর জন্য।


0

এটিসকে অবহেলা করা হচ্ছে সুতরাং আপনি যদি ওএসএক্স ১০.৯ চালাচ্ছেন বা তারপরে আপনার চালনার দরকার হতে পারে

xcrun atos

সতর্কতা: / usr / bin / atos চলমান এবং ভবিষ্যতের ওএস এক্স রিলিজ থেকে সরানো হবে। এটি এখন এক্সকোড বিকাশকারী সরঞ্জামগুলিতে এর মাধ্যমে আহবান করার জন্য উপলব্ধ:xcrun atos


দেখে মনে হচ্ছে অ্যাপল ডিওআরএফ ফর্ম্যাটটিকে সরঞ্জামগুলির প্রতিটি প্রকাশের সাথে মরফ করার অনুমতি দিচ্ছে (বিশেষত সুইফটের আবির্ভাবের সাথে) বোঝায় যাতে তারা এটিকে সরঞ্জামটির ডিস্ট্রোতে নিয়ে যাচ্ছে।
ডেভিড গিশ

0

আমি একটি মূল অ্যাপ্লিকেশন আপলোড বাইনারি প্রত্যাখ্যান ত্রুটিগুলি চিহ্নিত করতে পাঠ্য রঙ্গর ব্যবহার করতে চাই। (ক্র্যাশ ডেটাটি আপনার আইটিউনস কানেক্ট অ্যাকাউন্টে পাওয়া যাবে) দুটি ফাইলের তুলনা করা পার্থক্যগুলি পিনপয়েন্টে। প্রতীকীক্র্যাশ ফাইলের মধ্যে পার্থক্য থাকবে যা ফাইলটির লাইন এবং সমস্যার সংখ্যা দেখায়।


-2

ক্র্যাশ লগগুলি তদারকি করতে আমরা গুগল ক্র্যাশলিটিক্স ব্যবহার করি, অনুভূতিটি অত্যন্ত সময়োপযোগী এবং ব্যবহার করা সুবিধাজনক।

দস্তাবেজের লিঙ্কগুলি : https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dferences

নিখোঁজ ডিএসওয়াইএমস ফ্যাব্রিকের মধ্যে আপনার প্রকল্পের ডিএসওয়াইএম স্বয়ংক্রিয়ভাবে আপলোড করার জন্য একটি সরঞ্জাম অন্তর্ভুক্ত রয়েছে। টুলটি চালানো / চালিত স্ক্রিপ্টের মাধ্যমে করা হয় যা আপনার চালনার স্ক্রিপ্ট বিল্ড ফেজ-এ অনবোর্ডিংয়ের সময় যুক্ত করা হয়। কিছু নির্দিষ্ট পরিস্থিতি থাকতে পারে, যখন অনন্য প্রকল্প কনফিগারেশনের কারণে বা আপনি যদি আপনার অ্যাপ্লিকেশনটিতে বিটকড ব্যবহার করেন তখন ডিএসওয়াইএম আপলোডগুলি ব্যর্থ হয়। যখন কোনও আপলোড ব্যর্থ হয়, ক্র্যাশলিটিক্স ক্র্যাশগুলির প্রতীক এবং প্রদর্শন করতে সক্ষম হয় না এবং আপনার ফ্যাব্রিক ড্যাশবোর্ডে একটি "মিসিং ডিএসওয়াইএম" সতর্কতা উপস্থিত হবে।

অনুপস্থিত ডিএসওয়াইএমগুলি নীচে বর্ণিত পদক্ষেপগুলি অনুসরণ করে ম্যানুয়ালি আপলোড করা যেতে পারে।

দ্রষ্টব্য: স্বয়ংক্রিয় ডিএসওয়াইএম আপলোড সরঞ্জামের বিকল্প হিসাবে, ফ্যাব্রিক একটি কমান্ড-লাইন সরঞ্জাম সরবরাহ করে (আপলোড-প্রতীক)) যা আপনার প্রকল্পের বিল্ড প্রক্রিয়ার অংশ হিসাবে চালনার জন্য ম্যানুয়ালি কনফিগার করা যেতে পারে। কনফিগারেশন নির্দেশাবলীর জন্য নীচে আপলোড-প্রতীক বিভাগটি দেখুন।

...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.