আমি জিডিবিতে সি-স্ট্রিংয়ের পূর্ণ দৈর্ঘ্য মুদ্রণ করতে চাই। ডিফল্টরূপে এটি সংক্ষেপিত হচ্ছে, আমি কীভাবে জিডিবিকে পুরো স্ট্রিং মুদ্রণ করতে বাধ্য করব?
আমি জিডিবিতে সি-স্ট্রিংয়ের পূর্ণ দৈর্ঘ্য মুদ্রণ করতে চাই। ডিফল্টরূপে এটি সংক্ষেপিত হচ্ছে, আমি কীভাবে জিডিবিকে পুরো স্ট্রিং মুদ্রণ করতে বাধ্য করব?
উত্তর:
set print elements 0
set print elementsnumber-of-elements
একটি অ্যারে জিডিবি এর কতগুলি উপাদান মুদ্রণ করবে তার একটি সীমা নির্ধারণ করুন। জিডিবি যদি বড় অ্যারে প্রিন্ট করে তবে set print elementsকমান্ড দ্বারা নির্ধারিত উপাদানগুলির সংখ্যা মুদ্রণের পরে এটি মুদ্রণ বন্ধ করে দেয় । এই সীমাটি স্ট্রিং প্রদর্শনের ক্ষেত্রেও প্রযোজ্য। যখন, GDB শুরু এই সীমা 200. সেট করা হয় সেটিং সংখ্যা অফ উপাদানের শূন্য মানে যে মুদ্রণ সীমাহীন ।
যতক্ষণ না আপনার প্রোগ্রামটি বুদ্ধিমান অবস্থায় রয়েছে, আপনি call (void)puts(your_string)এটিকে স্টাডাউটে মুদ্রণ করতেও পারেন। একই নীতিটি ডিবাগারের কাছে উপলব্ধ সমস্ত ফাংশনের ক্ষেত্রে প্রযোজ্য।
তৃতীয় বিকল্প রয়েছে: এক্স কমান্ড, যা আপনাকে বিশ্বব্যাপী সেটিং পরিবর্তন না করে নির্দিষ্ট কমান্ডের জন্য একটি পৃথক সীমা নির্ধারণ করতে দেয়। স্ট্রিংয়ের প্রথম 300 টি অক্ষর মুদ্রণ করতে আপনি ব্যবহার করতে পারেন x/300s your_string। আউটপুটটি পড়তে কিছুটা শক্ত হতে পারে। উদাহরণস্বরূপ একটি এসকিউএল ক্যোয়ারী ফলাফল মুদ্রণ:
(gdb) x / 300sb stmt.c_str () 0x9cd948: "নিবন্ধ নির্বাচন করুন ..." 0x9cd958: "আর্টিকেল থেকে owণী" ... ..
x!
printfকমান্ড সম্পূর্ণ স্ট্রিং প্রিন্ট হবে:
(gdb) printf "%s\n", string
set print elements nnnএবং আপনি যদি না করেন তবে সম্পূর্ণ স্ট্রিংটি মুদ্রণ করবে না set print elements 0।
এটি সম্পূর্ণ করার জন্য:
(gdb) p (char[10]) *($ebx)
$87 = "asdfasdfe\n"
আপনাকে অবশ্যই একটি দৈর্ঘ্য দিতে হবে, তবে সেই স্ট্রিংয়ের উপস্থাপনা পরিবর্তন করতে পারে:
(gdb) p/x (char[10]) *($ebx)
$90 = {0x61,
0x73,
0x64,
0x66,
0x61,
0x73,
0x64,
0x66,
0x65,
0xa}
আপনি যদি তাদের মানগুলি দিয়ে ডিবাগ করতে চান তবে এটি কার্যকর হতে পারে
ব্যবহার set elements ...সর্বদা সর্বোত্তম উপায় নয়। এটি আলাদা হবে যদি দরকারী set string-elements ...।
সুতরাং, আমি আমার .gdbinit এ এই ফাংশনগুলি ব্যবহার করি:
define pstr
ptype $arg0._M_dataplus._M_p
printf "[%d] = %s\n", $arg0._M_string_length, $arg0._M_dataplus._M_p
end
define pcstr
ptype $arg0
printf "[%d] = %s\n", strlen($arg0), $arg0
end
আদেশ সহকারে: