هل هناك طريقة لتصحيح فرعي أو جانبي باستخدام بيديف؟

StackOverflow https://stackoverflow.com/questions/1624932

سؤال

وأنا باستخدام الكسوف / بيديف في محاولة لايجاد وسيلة لتصحيح رمز يستخدم subprocess.Popen لخلق عملية الطفل: أريد أن أكون قادرة على تصحيح عملية الطفل الذي تم إنشاؤه. المشكلة هي أنني لا يمكن أن تجد وسيلة لتصحيح تزوجنا حدود العملية، وانا التخمين أنه هو في الواقع غير ممكن. ومع ذلك، لا يمكن ان تعرف حتى تسأل، وحتى أن أقوم به!

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

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

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

المحلول

وأنا لا يبدو بيديف تستطيع ان تفعل ذلك (لا يمكن PyDbg وWinDbg)، ولكن يبدو جدب أن: <لأ href = "http://wiki.python.org/moin/DebuggingWithGdb" يختلط = "نوفولو noreferrer "> http://wiki.python.org/moin/DebuggingWithGdb .

نصائح أخرى

ولقد وجدت نوعا من الحل قد عمل لك.

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

وعلاوة على ذلك، يمكنك تعديل دعوة settrace لذلك لا تعليق فعلا عملية:

import pydevd
pydevd.settrace(suspend=False)

وهكذا إدراج رمز أعلاه في مكان ما في تهيئة فرعي أو جانبي في وقت مبكر، ويجب أن تكون جيدة. لا يزال قليلا من الإختراق، لكنها بالتأكيد أفضل من الطريقة اليدوية.

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