উত্তর:
আপনি ব্যবহার করতে পারেন strcmp
:
break x:20 if strcmp(y, "hello") == 0
20
লাইন নম্বর, x
যে কোনও ফাইলের নাম y
হতে পারে এবং কোনও পরিবর্তনশীলও হতে পারে।
No symbol "strcmp" in current context.
run
গতিশীল লাইব্রেরিগুলি লোড হওয়ার জন্য আপনাকে এটির জন্য আঘাত করতে হবে। উৎস জন্য, এটি Google এবং খুঁজে পেয়েছেন: stackoverflow.com/questions/10000335/... :-)
$_streq
@tlWitec এর থেকে পদ্ধতি আরও ভাল।
break x if ((int)strcmp(y, "hello")) == 0
কিছু বাস্তবায়নে জিডিবি হয়ত স্ট্রিম্পের রিটার্নের ধরণটি জানে না। তার মানে আপনাকে নিক্ষেপ করতে হবে, অন্যথায় এটি সর্বদা সত্য হিসাবে মূল্যায়ন করবে!
জিডিবি .5.৫ থেকে আপনি এই স্থানীয় সুবিধাজনক ফাংশনগুলি ব্যবহার করতে পারেন :
$_memeq(buf1, buf2, length)
$_regex(str, regex)
$_streq(str1, str2)
$_strlen(str)
strcmp()
প্রতিটি বার ব্রেকপয়েন্টে আঘাত হানার পরে প্রক্রিয়াটিতে একটি "বিদেশী" চালানোর চেয়ে সমস্যা কম মনে হচ্ছে । এটি মাল্টিথ্রেডেড প্রক্রিয়াগুলি ডিবাগ করার জন্য বিশেষত সত্য।
নোট করুন আপনার জিডিবি পাইথন সমর্থন দিয়ে সংকলন করা দরকার যা বর্তমান লিনাক্স ডিস্ট্রোসের কোনও সমস্যা নয়। নিশ্চিত হওয়ার জন্য, আপনি এটি
show configuration
জিডিবির ভিতরে চালিয়ে এবং অনুসন্ধান করে পরীক্ষা করতে পারেন--with-python
। এই ছোট্ট অনেলাইনার কৌশলটিও করেন:$ gdb -n -quiet -batch -ex 'show configuration' | grep 'with-python' --with-python=/usr (relocatable)
আপনার ডেমো কেসের জন্য ব্যবহারটি হবে
break <where> if $_streq(x, "hello")
বা, যদি আপনার ব্রেকপয়েন্টটি ইতিমধ্যে বিদ্যমান থাকে এবং আপনি কেবল এটিতে শর্ত যুক্ত করতে চান
condition <breakpoint number> $_streq(x, "hello")
$_streq
কেবলমাত্র পুরো স্ট্রিংয়ের সাথে মেলে, তাই আপনি যদি আরও কিছু ধূর্ত ব্যবহার করতে চান তবে আপনার পাইথন নিয়মিত প্রকাশের বাক্য গঠনটিকে$_regex
সমর্থন করে ।
strncmp
এবংstrstr
অন্যান্য দরকারী সি ক্যোয়ারী ফাংশন।