سؤال

هل من الممكن لتصحيح عن بعد بدأت عملية VB6 الخارجي؟

والتطبيق هو تطبيق VB6 مع عدد غير قليل من الموارد دلل / OCX. أنا محاولة لإعداد ClickOnce النشر، وذلك باستخدام COM-تسجيل مجاني، التطبيق VB6 ولكن لم يتم الحصول على أخطاء عندما ينفذ.

وأفهم الطريقة التي VB6 الموجهات registerations COM من المحتمل أن يعني أن هذا غير ممكن ولكن اعتقد شخص ما قد يكون لديه فكرة أفضل.

هل كانت مفيدة؟

المحلول

وأعتقد أنه عندما التصحيح في VB6، فإنه لا نعلق على تشغيل ثنائي ولكن بدلا من ذلك يفسر رمز داخل معالجته الخاصة. وهذا هو السبب تظهر واجهات برمجة التطبيقات إدارة المهام و Win32 VB6.exe حيث التطبيق قيد التشغيل عند التصحيح.

وأيضا كما تقول، VB6 أحيانا قصيرة الدوائر تدعو إلى مكتبات COM حتى اعتراض هذه الدعوات ليست دائما ممكنة.

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

وحظا سعيدا

نصائح أخرى

لدعم الجواب داريل مما يدل Windbg - وهنا <ل أ href = "http://blogs.msdn.com/marklon/archive/2006/01/28/518616.aspx" يختلط = "نوفولو noreferrer"> 2006 بلوق وظيفة من قبل مايكروسوفت الرجل حول استخدام Windbg مع VB6 و 2004 بلوق وظيفة بواسطة Microsoft آخر الرجل مع مقدمة موجزة لWindbg.

وتحرير: فقط أن نوضح تماما. Windbg هو المصحح مستقل خال من مايكروسوفت. تجميع الخاص يكسيس VB6، دلس وOCXs إلى التعليمات البرمجية الأصلية مع الرموز (إنشاء ملفات PDB)، وسوف تكون قادرة على تصحيح تطبيق ClickOnce الخاص بك.

ومقتطفات مفتاح من بلوق:

<اقتباس فقرة>   

إذا كان لديك وصول محدود إلى الجهاز الخادم ثم يمكنك استخدام   مرافق التصحيح عن بعد من WinDbg. إرفاق نسخة من WinDbg ل   عملية بالطريقة المعتادة ثم تشغيله في إلى ملقم التصحيح   (راجع .server في مساعدة WinDbg). ثم يمكنك الاتصال به   عن بعد من القائمة ملف من WinDbg. وسيكون مثلما يجري   هناك استثناء لعدم وجود الضوضاء من المشجعين غرفة الخادم. متى   تصحيح بعيد، نسختك من WinDbg هو مجرد محطة ذكية جدا   لذلك كل الملحقات والرموز وهلم جرا يجب أن تكون على الملقم البعيد.   يمكنك إعداد ذلك بنفس الطريقة بالضبط لأي DLL، VB6 أو .NET.

     

وسوف الرموز الخاصة بك المكون يتم تحميل حتى لا مكون الخاص بك   ولذا عليك أن السماح للتشغيل الخادم على الأقل لفترة طويلة. يمكنك وضع   استراحة في وقت مبكر في التعليمات البرمجية VB الخاص بك إذا كنت ترغب في وقف المصحح في   هذه النقطة ولكن إذا قمت بذلك، تذكر أنه لن يتوقف عند هذا الحد في كل مرة   خلال التعليمات البرمجية. لنفترض أن ما تركت تشغيله ومن ثم كسر في.   إذا كنت قائمة الرموز المحملة على حدة مع "س MyModule! *"   ثم سترى جميع وظائف معا مع الكثير من الرموز   واحدة في وجود بالنسبة لك. ويضيف VB اجهات والرموز جدا   بلا خجل ولكنك لا تحتاج عادة ما يدعو للقلق تلك. واحد   الشيء الذي من المحتمل أن تبدو غريبة هو أن جميع من الدرجة / جملة طريقة   مع C ++ اتفاقية القولون مزدوجة بدلا من قليلا ودية   نقطة. WinDbg لا يفهم أن VB يختلف ويتم التعامل معها   تماما مثل أي DLL مع حرف.

     

من هنا، يمكنك تعيين نقاط التوقف بالطريقة المعتادة (بي بي الخ) وخطوة   خلال التعليمات البرمجية. يمكنك أيضا فتح VB حدات شفرة المصدر ومجموعة   نقاط التوقف فيها مع F9 على الرغم من امتدادات الملفات VB ليست في   المصدر نوع ملف المنسدلة. التنقل خلال التعليمات البرمجية تكشف   لكنها قد تكون مزعجة قليلا إذا كنت لم أر التعليمات البرمجية التي VB   يولد لك من قبل. وسوف يتم التنقل خلال المجمع   وهناك الكثير من غو COM في هناك. Hresults الحصول على فحص الكثير.   وربما تحتاج إلى الرجوع إلى مصدر كثير من الأحيان إلى العمل بها حيث   كنت منذ يستغرق قليلا من الممارسة لتكون قادرة على معرفة ما   شفرة المصدر يشبه. المتغيرات تشكل تحديا خاصة ل   VB يفعل الكثير من العمل بالنسبة لك هناك وما يشبه بسيطة   المعادلة يمكن أن يؤدي إلى قدر كبير من التعليمات البرمجية. رمز الأمثل هو حتى   أصعب لأن ترتيب التنفيذ هو غالبا ما تكون مختلفة جدا عن   ما يمكن توقعه، وأنها أصعب من المعتاد لرؤية البيانات.

     

والبيانات ليس من السهل الحصول على هذا الطريق. عندما تنظر إلى المتغيرات المحلية   (العنف المنزلي هو الأمر) ثم قد ترى أن المتغيرات ترد ببساطة   كما يحجب مما يعني أن الذاكرة المستخدمة لشيء   آخر وكذلك في أثناء حياة وظيفة أو أن الاسم غير   فريدة من نوعها في هذا السياق. تتضمن التعدادات تظهر تماما كما صحيحة أو صفقات الشراء و   تظهر ككائنات المؤشرات. في الواقع، انهم دائما كانوا بالضبط ولكن   يخفي IDE VB أن منك. سلاسل VB هي BSTRs COM (و   وفقا لذلك يونيكود) تحت الأغطية والمصفوفات بايتهي حقا شار   المصفوفات. قد يفاجأ لاكتشاف أن سلاسل VB هي يونيكود   كما يبدو VB ليس لديهم دعم أي شيء ولكن ANSI. هذا هو   لأن روبي يشكل كان محرك ANSI فقط. وقت التشغيل يحوله   سلاسل Unicode إلى ANSI لروبي وAPI المكالمات على الرغم من أن هناك طرق   لتمرير Unicode إذا كنت تريد.

     

وأنت لن تكون قادرة على الحصول على خطأ، التطبيقات أو كائنات طابعة   منذ كنت في حاجة للذهاب من خلال الكثير من الداخلية وتماما   هياكل لا يحملون وثائق للحصول عليهم. حتى لو كنت قد نصل الى هناك،   أنها ستكون فقط البيانات الخام بدون وظائف استرجاع أنك   استخدام في VB. اذا كنت بحاجة الى ان ننظر في أي من هذه المجالات، وأفضل رهان   هو تضمين كود التصحيح في التعليمات البرمجية المصدر لنسخ قيمهم ل   في مكان ما أنه يمكنك الحصول على.

     

ويمكنك التدخل لوقت التشغيل VB إذا كنت تريد ولكن ربما لن يكون   كاشفا للغاية إذا كنت تحاول تصحيح التطبيق الخاص بك. اذا فعلت،   ستلاحظ أن الداخلية VB في وCOM جدا أثرت. ال   كان التأثير في الواقع اتجاهين منذ جاءت بعض الأفكار COM من VB   في الأصل.

     

وقد ترى استثناءات عند تشغيل التعليمات البرمجية. مرجع فارغة   استثناءات (أي dereferencing مؤشر فارغة) ليست غير شائعة أو   أي شيء يدعو للقلق. وسوف تظهر كما اول فرصة C000005   استثناءات مع عنوان 0 أو ما يقرب من 0. فإن وقت التشغيل تفعل أحيانا   أنه إذا كانت هناك كائنات مجموعة لشيء ولكن هذا هو آمنة لأن   القيم الممكنة فقط لاغية أو قيمة صالحة. سترى أيضا   استثناءات إذا التعليمات البرمجية لا عمليات البحث في مجموعات والقيمة   ليس هناك. لأن الاستثناءات هي الآن مكلفة جدا، وربما كنت تريد   لتجنب القيام بذلك إذا كنت تستطيع. استثناء آخر بأنكم   عادة ترى c000008f. إذا كنت تبحث عن عدد يصل بعد ذلك سوف تجد   أنه هو النقطة العائمة استثناء نتيجة غير دقيق. يتم استخدامه في   معنى مختلف هنا - لأننا لا تولد نقطة الحقيقي العائمة   استثناءات نتيجة غير دقيق، فإنها يمكن بأمان يتم طرح تشير إلى VB   أخطاء من النوع العادي يمكن تتبعه.

     

والتصحيح توقف وتعطل في مكونات VB يتم إلى حد كبير في   بنفس الطريقة كما هو الحال مع أي مكون غير المدارة الأخرى ولكنها ليست سوى قليلا   أصعب بسبب مصنفات المذكورة أعلاه. إذا كان لديك لمحاولة   تصحيح التعليمات البرمجية VB بهذه الطريقة، أود أن أوصي بشدة أن تبدأ   على تطبيق "مرحبا العالم" والعمل طريقك. كل الاشياء   قد VB لغة سهلة إلى رمز في جعلها لغة رهيبة ل   التصحيح.

هل حاولت windbg ؟ فقط للتأكد من لديك ملفات PDB للمشروع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top