×
Namespaces

Variants
Actions
(Difference between revisions)

Creating crash log in Windows Phone (ِArabic)

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee -)
hamishwillee (Talk | contribs)
m (Hamishwillee - Fix categories)
 
Line 1: Line 1:
[[Category:Lang-Arabic]][[Category:Debugging on Windows Phone]][[Category:Code Examples]][[Category:Windows Phone 7.5]][[Category:Windows Phone]]
+
[[Category:Lang-Arabic]][[Category:Debugging on Windows Phone]][[Category:Code Examples]][[Category:Windows Phone 7.5]][[Category:Windows Phone 8]]
 
{{Abstract|هذا المقال يوضح كيفية تسجيل الأستثناءات غير المعالجة التي تجعل تطبيقك غير قادر على العمل بنجاح .}}
 
{{Abstract|هذا المقال يوضح كيفية تسجيل الأستثناءات غير المعالجة التي تجعل تطبيقك غير قادر على العمل بنجاح .}}
  
Line 7: Line 7:
 
|devices= Nokia Lumia 820, Nokia Lumia 800
 
|devices= Nokia Lumia 820, Nokia Lumia 800
 
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Qt SDK 1.1.4]) -->
 
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Qt SDK 1.1.4]) -->
|platform= Windows Phone 8, Windows Phone 7
 
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->
 
 
|signing= <!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 
|signing= <!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 
|capabilities= <!-- Required capabilities for code (e.g. ID_CAP_LOCATION, ID_CAP_NETWORKING) -->
 
|capabilities= <!-- Required capabilities for code (e.g. ID_CAP_LOCATION, ID_CAP_NETWORKING) -->
|keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase -->
 
 
|language= Lang-Arabic
 
|language= Lang-Arabic
 
|translated-by= [[User:Bintk]]
 
|translated-by= [[User:Bintk]]
Line 22: Line 19:
 
|creationdate= 20130418
 
|creationdate= 20130418
 
|author= [[User:Somnathbanik]]
 
|author= [[User:Somnathbanik]]
<!-- The following are not in current metadata -->
 
|keywords = IsolatedStorageFileStream,StreamWriter
 
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) -->
 
 
}}
 
}}
  

Latest revision as of 07:54, 19 July 2013

هذا المقال يوضح كيفية تسجيل الأستثناءات غير المعالجة التي تجعل تطبيقك غير قادر على العمل بنجاح .

WP Metro Icon Bug.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata
Code ExampleTested with
Devices(s): Nokia Lumia 820, Nokia Lumia 800
CompatibilityArticle
Translated:
By bintk
Last edited: hamishwillee (19 Jul 2013)

Contents

[edit] المقدمة

  • كل تطبيق في العالم لديه مرحلة بيتا ويتناول في هذه المرحلة , اختبار التطبيق من قبل المستخدمين النهائيين. أحيانا حتى في تطبيق المنتشرة هناك أخطاء أيضاً .
  • لذلك يجب أن يكون هناك آلية للحصول علي معلومات تلقائية حول الكود الذي سبب هذا الخطاً في التطبيق الخاص بك دون ان يشعر المستخدم به وكذلك للمستخدم النهائي. لذلك هذه المقالة سوف تعلمك تسجيل تلك الأخطاء و الاستثناءات في تخزين معزول وإرساله إلى المطور عبر خدمة ويب أو البريد الإلكتروني لسرعة التصحيح هذه الأخطاء من خلال كتابة بضعة أسطر من التعليمات البرمجية فقط.


[edit] التنفيذ

[edit] كتابة السجل

There is a method named Application_UnhandledException in your app.xaml.cs file التي يتم استدعاء كلما يحصل تشغيل للتطبيق بمشكلة غير معالجة. هذا الأسلوب جدا حيث يجب أن تكتب تلك الاستثناءات في ملف السجل .

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
string errorString = DateTime.Now.ToLocalTime().ToString() + " | " + "Message: " + e.ExceptionObject.Message + "Stack Trace: " + e.ExceptionObject.StackTrace;
WriteCrashLog(errorString);
}
 
 
public bool WriteCrashLog(string message)
{
bool result = false;
string fileName = "CRASH_LOG_FILE_NAME";
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var stream = new IsolatedStorageFileStream(fileName,
FileMode.Append,
FileAccess.Write,
store))
{
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine(message);
writer.WriteLine("");
writer.Close();
stream.Close();
result = true;
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
Debug.WriteLine(ex.Message);
result = false;
}
return result;
}

[edit] أضف نقاط للتحقق

في بعض الأحيان لاتحصل على معلومات كافية حول سبب المشكلة و لذلك نقاط التحقق سوف توفر لك معلومات تفصيليى مثل اين كان المستخدم بالظبط عندما ظهرت المشكلة , و المزيد من التفاصيل مثل عدد النقرات , انتبه في هذه الحاله سوف تستهلك كميه كبيرة من البينات لإرسال هذه التقارير التي ستكون مكلفه علي العملاء.

For adding checkpoint logs call WriteCrashLog(message) at your checkpoints. Your checkpoints will be mostly in xaml.cs files. WriteCrashLog method can be accessed using Application.Current property. Remember to use unique message texts for the different code checkpoints.

App a = Application.Current as App;
a.WriteCrashLog(message);

خلاف ذلك يمكنك أيضا إنشاء فئة ومكان ثابت WriteCrashLog method في داخله والوصول إليه من أي مكان في المشروع.

[edit] ارسال السجل

هناك نوعان من العمليات لإرسال السجل للمطور.

  1. التحميل إلي سيرفر - خادم .
  2. ارسالها عبر البريد الإلكتروني للمطور .


[edit] التحميل إلي السيرفر

إذا كان لديك سيرفر مخصص لهذا الأمر سوف يكون جيد لانه لايحمل إي تدخل من المستخدمين , يمكنك إستخدم WebClient class لرفع البيانات للسيرفر . ربما انت لست بحاجه لكل السجلات الفردية وربما لا يمثل سوي نسبة صغيرة من المستخدمين الذين يواجهوا المشاكل .

انقر هنا لمزيد من المعلومات حول إستخدام WebClient class.

[edit] الارسال عبر البريد الألكتروني للمطور

ويمكن تحقيق ذلك بسهولة عبر استخدام EmailComposeTask. انقر هنا لمذيد من التفاصيل

This page was last modified on 19 July 2013, at 07:54.
158 page views in the last 30 days.