কমান্ড ফ্ল্যাগের সাহায্যে ভবিষ্যতে ভাগ করা লাইব্রেরিতে ব্রেকপয়েন্টগুলি কীভাবে সেট করবেন


94

আমি --commandপতাকাটি ব্যবহার করে একটি জিডিবি সেশনটি স্বয়ংক্রিয় করার চেষ্টা করছি । আমি একটি ভাগ করা লাইব্রেরির একটি ফাংশন (একটি ডিএলএল এর ইউনিক্স সমতুল্য) সেট করার চেষ্টা করছি। আমার সেমিএসডিএসডিবি এটির মতো দেখাচ্ছে:

set args /home/shlomi/conf/bugs/kde/font-break.txt
b IA__FcFontMatch
r

তবে, আমি নিম্নলিখিত পাচ্ছি:

shlomi: ~ / প্রগস / বাগ-এক্সটার্নাল / কেডি / ফন্ট ব্রেকিং $ জিডিবি - কম্যান্ড = সেমিএসডিএসডিবি ...
জিএনইউ জিডিবি 6.8-2mdv2009.0 (মান্দ্রিভা লিনাক্স রিলিজ ২০০৯.০)
কপিরাইট (সি) ২০০৮ ফ্রি সফটওয়্যার ফাউন্ডেশন, ইনক।
লাইসেন্স জিপিএলভি 3 +: জিএনইউ জিপিএল সংস্করণ 3 বা তার পরে 
এটি নিখরচায় সফ্টওয়্যার: আপনি এটি পরিবর্তন ও পুনরায় বিতরণ করতে মুক্ত।
আইন দ্বারা অনুমোদিত সীমাতে কোনও গ্যারান্টি নেই। "অনুলিপি দেখান" টাইপ করুন
এবং বিশদ জন্য "ওয়ারেন্টি দেখান"।
এই জিডিবি "i586-মান্ড্রিভা-লিনাক্স-গ্নু" হিসাবে কনফিগার করা হয়েছিল ...
(কোনও ডিবাগিং প্রতীক পাওয়া যায়নি)
"IA__FcFontMatch" ফাংশন সংজ্ঞায়িত হয়নি।
ভবিষ্যতে ভাগ করা লাইব্রেরি লোডে ব্রেকপয়েন্টটি মুলতুবি করবেন? (y বা [n]) [উত্তর এন; টার্মিনাল থেকে নয় ইনপুট]

সুতরাং এটি সর্বোপরি ব্রেকপয়েন্ট সেট করে না। মুলতুবি থাকা ভবিষ্যতের ভাগ করা লাইব্রেরি লোডে ব্রেকপয়েন্টগুলি সেট করতে "y" এর উত্তর দিতে আমি কীভাবে এটি ডিফল্ট করতে পারি?

আমার মনে আছে যে আমি কিছু করতে সক্ষম হয়েছি, তবে কী মনে করতে পারছি না।


উত্তর:


153

নিজের জবাব, আমি যে উত্তরটি আমাকে আইআরসি দিয়েছিল তা আমি দিতে চাই:

(জিডিবি) এপ্রোপস মুলতুবি
ক্রিয়া - একটি ট্রেসপয়েন্টে নেওয়া পদক্ষেপগুলি নির্দিষ্ট করুন
ব্রেকপয়েন্ট নির্ধারণ করুন - ব্রেকপয়েন্টের নির্দিষ্ট সেটিংস
ব্রেকপয়েন্ট পেন্ডিং সেট করুন - মুলতুবি ব্রেকপয়েন্টগুলির বিষয়ে ডিবাগারের আচরণ সেট করুন
ব্রেকপয়েন্ট দেখুন - ব্রেকপয়েন্ট নির্দিষ্ট নির্দিষ্ট সেটিংস
ব্রেকপয়েন্ট পেন্ডিং দেখান - মুলতুবি ব্রেকপয়েন্টগুলি সম্পর্কিত ডিবাগারের আচরণ দেখান

এবং সুতরাং ব্রেক ব্রেকপয়েন্ট স্থগিত করা কৌতুক করে; এটা ব্যবহার করা হয় cmds.gdbযেমন মত

set breakpoint pending on
break <source file name>:<line number>


কিছু কারণে, আমি এই ত্রুটি পেয়েছি Program received signal SIGILL, Illegal instruction। আমি একটি ফাইল থেকে ব্রেকপয়েন্টগুলি উত্সাহিত করছি এবং আমার set breakpoint pending onকিছু ব্রেকপয়েন্টগুলি একটি লাইব্রেরিতে রয়েছে যা প্রোগ্রামটি লোড করে। আমি যদি নিজেই ব্রেকপয়েন্টগুলি যুক্ত করি তবে কোনও ত্রুটি নেই। অন্য কেউ কি একই সমস্যার মুখোমুখি?
ব্রেকডফুট

@ ব্রোকেনফুট: আমি মনে করি আপনার উত্তরটি এখানে কোনও মন্তব্যে না দিয়ে আপনার প্রশ্নটি নতুন শীর্ষ-স্তরের প্রশ্নে করা উচিত। এইভাবে আরও লোকেরা এটি লক্ষ্য করবে। তদতিরিক্ত, আপনার সিস্টেম সম্পর্কে আরও তথ্য সরবরাহ করা উচিত।
শ্লোমি ফিশ

12

ওটি: টার্মিনালে এটি এক লাইনে কাজা ডিবাগ করার মতো হবে:

gdb -ex "set breakpoint pending on" -ex "break gdk_x_error" -ex run --args caja --sync

4
আপনি 'প্রাক্তন' স্যুইচটি কোথায় পেলেন ?, ডকুমেন্টেশনে এই পরামিতিটির কোনও রেফারেন্স আমি খুঁজে পাই না (তবে এটি কাজ করে :))
গিয়ারয়েড মারফি

-exআমার জন্য কাজ করেনি। আমাকে একটি টিএমপি ফাইলে কমান্ডগুলি রাখতে হয়েছিল এবং এর সাথে কল করতে হয়েছিল:gdb -x /tmp/gdb.commands myexecutible
জেসন মুর

5

কোন চিহ্ন নেই।

objdump -t /lib/libacl.so
SYMBOL TABLE:
no symbols
objdump -T /lib/libacl.so
...
00002bd0 g    DF .text  000000d0  ACL_1.0     acl_delete_entry
...


(gdb) break 0x0002bd0 

(gdb) x/20i acl_delete_entry
0x2bd0 <acl_delete_entry>:      stwu    r1,-32(r1)
0x2bd4 <acl_delete_entry+4>:    mflr    r0
0x2bd8 <acl_delete_entry+8>:    stw     r29,20(r1)
0x2bdc <acl_delete_entry+12>:   stw     r30,24(r1)
0x2be0 <acl_delete_entry+16>:   mr      r29,r4
0x2be4 <acl_delete_entry+20>:   li      r4,28972
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.