নাকেস্টেট --pdb বিকল্পের সাথে ব্রেকপয়েন্টগুলি সেট করা


88

nosetests --pdbআসুন আমি ত্রুটি বা ব্যর্থতা থামিয়ে দেব, তবে এটি আমার প্রয়োজনের জন্য অনেক দেরী। মৃত্যুদন্ড কার্যকর করার সময় কোডের মাধ্যমে পদক্ষেপ নেওয়া সমস্যাটি যেখানে রয়েছে সেখানে ডিবাগ করতে সহায়তা করে।

যাইহোক, ন্যাসেটসগুলি সহায়ক যেহেতু তারা পরীক্ষাগুলি অনুমতি দেয় যা আপেক্ষিক আমদানিতে নির্ভর করে (অর্থাত্ কোনও প্যাকেজের পরীক্ষাগুলি)।

পরীক্ষাগুলি কার্যকর করার আগে আমি কীভাবে ব্রেকপয়েন্টগুলি সেট করতে পারি? বর্তমানে আমি ব্যবহার করছি:

python -m pdb /path/to/my/nosetests testfile.py

এই সমাধানটি পর্যাপ্ত নয়। নসেটসেটগুলি পিডিবি আউটপুট নিয়ে হস্তক্ষেপ করে এবং আমার কীবোর্ড নিয়ন্ত্রণগুলি (যেমন তীর কীগুলি) নষ্ট হয়ে গেছে।

আমদানি পিডিবি ব্যবহার; পিডিবি.সেট_ট্রেস () একটি ভাল ধারণা বলে মনে হবে, তবে নস্টস্টেটগুলি পিডিবি কনসোলটিতে আমার অ্যাক্সেসকে বাধা দিচ্ছে।

উত্তর:


120

আপনি যোগ করতে পারেন

import pdb; pdb.set_trace() 

আপনার উত্সের যে কোনও জায়গায় আপনি ডিবাগারে থামাতে চান।

নিশ্চিত হয়ে নিন যে আপনি -sনাকে গিয়েছেন যাতে এটি ক্যাপচার না হয় stdout


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

26
স্ট্যাডআউট ক্যাপচার থেকে আটকাতে নাসিস্টেটগুলিতে -s পতাকা যুক্ত করুন এবং আপনি পিডিবি ঠিকঠাক ব্যবহার করতে সক্ষম হবেন।
নেড ব্যাচেল্ডার

4
কাজ করে না. এটি ব্যবহার করুন:from nose.tools import set_trace; set_trace()
এনিলে

144

ব্যবহারের কথা মনে রাখার চেয়েও ভাল -sহ'ল set_traceনাকের সাথে উপস্থিত বৈকল্পিকটি ব্যবহার করা । অ্যাড

from nose.tools import set_trace; set_trace()

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


এর কোন দলিল আছে কি? কিভাবে লুপ থেকে সরানো?
এজে

আপনি বোঝাতে চাইছেন যে একবার pdbদৌড়ানোর পরে কীভাবে নেভিগেট করবেন ? আমি নিশ্চিত যে এখানে ডক্স রয়েছে, তবে আমার মাথার শীর্ষে - s"ফাংশন কল" তে "পদক্ষেপগুলি", n"পরবর্তী" বিবৃতিতে যায়, uস্ট্যাকটি "উপরে" dসরায় এবং "নীচে" সরে যায়। আপনি bব্রেকপয়েন্টগুলি সেট করতে এবং c"চালিয়ে যেতে" এবং স্টেপিং ডিবাগারটি ছাড়তে ব্যবহার করতে পারেন । আশা করি এইটি কাজ করবে!
ম্যাট লুঙ্গো

4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি মূল pdb.set_trace () কমান্ডের সমস্ত নিয়মিত কার্যকারিতা সরবরাহ করে।
tbm

এর আইপিথন / আইপিডিবি সংস্করণের কোনও সম্ভাবনা?
অঙ্কুর

5

সীমিত সীমাহীন ব্যবহারের জন্য আপনার আইপিথন থাকলে :

import ipdb; ipdb.set_trace() 

* সীমাহীন দুর্দান্ততা: ঠিক আইপিথনের মতো - অটো-সমাপ্তি, রঙিন ইত্যাদি


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