জিডিবি "প্রক্রিয়া-আইডির জন্য ম্যাচ টাস্ক পোর্টটি খুঁজে পেতে অক্ষম" ত্রুটি নিয়ে ব্যর্থ হয়েছে


138

আমার অ্যাপ্লিকেশনটি ঠিকঠাক চলে তবে জিডিবি নিম্নলিখিত ত্রুটির সাথে এটি ডিবাগ করতে ব্যর্থ

(gdb) run
Starting program: /path/to/app 
Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).

আমি ওএস এক্স লায়নে আছি জিডিবি সংস্করণটি

$ gdb --version
GNU gdb 6.3.50-20050815 (Apple version gdb-1752) (Sat Jan 28 03:02:46 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".

আমি মনে করি এই পোস্টটি সাহায্য করতে পারে: stackoverflow.com/questions/10221448/…
কোডি কোডমানকি

উত্তর:


64

স্নো চিতাবাঘ এবং পরবর্তী ম্যাক ওএস সংস্করণগুলিতে gdbএক্সিকিউটেবলকে কোডাইন করা যথেষ্ট নয় ।

এটিকে কাজ করতে আপনাকে এই নির্দেশিকাটি অনুসরণ করতে হবে: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt

গাইড এটির জন্য কীভাবে করবেন তা ব্যাখ্যা করে lldbতবে প্রক্রিয়াটি ঠিক একই রকম gdb


12
ওএসএক্স ১০.৯.২ এ ম্যাকপোর্টসের সাথে এই নির্দেশিকাগুলি আমার পক্ষে কার্যকর হয়নি, তবে এটি করেছে: সোর্সওয়্যার.অর্গ
উইকি

এটি কাজ করে! তবে আপনি কি দয়া করে ব্যাখ্যা করতে পারেন sudo security add-trustলাইনটি কী করছে? আমি কি .cerএখন আমার ডেস্কটপ থেকে ফাইলটি মুছতে পারি ?
শ্রীজিৎ রামকৃষ্ণন

9
codesign -s gdb_codesign `which gdb` এই গাইডের পরে সহায়তা করে
সিন্থার

বা sudo codesign -s gdb_codesign `which gdb-apple` ম্যাকোস সিয়েরায়।
এসডিভ করুন

3
সর্বশেষতম ওএসের জন্য, লিঙ্কটি কাজ করেছে
ইউসুয়ান

144

আমি পরিবর্তন যখন এটি কাজ করে sudo gdb executableFileName! :)


2
ধন্যবাদ। কাজের জন্য জিডিবি পাওয়ার জন্য এই প্লাস কোড সাইন ইন করার প্রয়োজন ছিল। আমি জিডিবি রুট অ্যাক্সেস দিয়েছি (এখানে বর্ণিত হিসাবে স্ট্যাকওভারফ্লো.com/Qtionstions/10476154/… ) তাই আমাকে প্রতিবার sudo টাইপ করতে হবে না। সম্পাদনা - একটি ভাল পদ্ধতির এখানে পাওয়া: stackoverflow.com/a/10441587/305149
Aneil Mallavarapu

14
এটি রুট হিসাবে চালান? আপনি গুরুতর? সবচেয়ে খারাপ "সমাধান"।
ইকুইডাময়েড

7
@ একুইডাময়েডকে কেন gdbরুট হিসাবে চালানো এত খারাপ হবে ? আমি কেবল কৌতূহলী ছিলাম কারণ এটি কেবল একটি ডিবাগার।
এই ব্যবহারকারী

আপনি এটিকে মূল হিসাবে চালিত করলে কী হবে? যে code আপনি লিখেছিলেন, এবং আমি পরিণতি বুঝতে পারছি না
ভয়ানক বরফ

4
@ কুলডিস সাধারণভাবে আপনি ক্রমবর্ধমান সুবিধাগুলি (বিশেষত রুট হিসাবে শীর্ষে প্রসারিত) দিয়ে প্রক্রিয়াগুলি পরিচালনা করতে চান না কারণ সাধারণভাবে তাদের সিস্টেমে জিনিসগুলি পরিবর্তন করতে বা 1024 এর চেয়ে কম বন্দরগুলি খুলতে অ্যাক্সেসের প্রয়োজন নেই (উচ্চতর বন্দরগুলি হতে পারে নন সিস্টেম / অ মূল ব্যবহারকারীদের দ্বারা ব্যবহৃত)। এমনকি যদি আপনি নিজের কোডটিতে "বিশ্বাস" করেন তবে এর অর্থ এই নয় যে আপনি এমন কোনও ভুল করেন নি যা এর ফলে rm -rf /ঘটেছিল বা একই সাথে ধ্বংসাত্মক কিছু ঘটায় যেখানে আপনি এমন কিছু কনফিগারেশন / বাইনারিগুলি ওভাররাইট করেন যেখানে আপনার কম্পিউটার শুরু করে এবং সাধারণত পরিচালনা করতে নির্ভর করে।
শানুহসাইন

32

আপনাকে একটি শংসাপত্র তৈরি করতে হবে এবং জিডিবিতে স্বাক্ষর করতে হবে:

  • অ্যাপ্লিকেশন "কীচেন অ্যাক্সেস" খুলুন (/ অ্যাপ্লিকেশনস / ইউটিলিটিস / কীচেন অ্যাক্সেস। অ্যাপ্লিকেশন)
  • মেনু খুলুন / কীচেন অ্যাক্সেস / শংসাপত্র সহকারী / একটি শংসাপত্র তৈরি করুন ...
  • একটি নাম (উদাহরণে gdb-cert) চয়ন করুন, "পরিচয়ের ধরণ" থেকে "স্বাক্ষরিত রুট" এ সেট করুন, "শংসাপত্রের ধরণ" সেট করুন "কোড সাইনিং" এ এবং "আমাকে ডিফল্টগুলিকে ওভাররাইড করুন" নির্বাচন করুন। "চালিয়ে যান" এ ক্লিক করুন। আপনি পূর্বনির্ধারিত 365 দিনের সময়কাল 3650 দিনের মধ্যে বাড়িয়ে দিতে চাইতে পারেন।
  • আপনি "শংসাপত্রের জন্য একটি অবস্থান নির্দিষ্ট করুন" স্ক্রিন না পাওয়া পর্যন্ত "চালিয়ে যান" এ বেশ কয়েকবার ক্লিক করুন, তারপরে "সিস্টেমে কীচেন" সেট করুন।
  • আপনি যদি "সিস্টেম" কীচেইনে শংসাপত্রটি সংরক্ষণ করতে না পারেন তবে এটি "লগইন" কীচেইনে তৈরি করুন, তারপরে এটি রফতানি করুন। তারপরে আপনি এটিকে "সিস্টেম" কীচেইনে আমদানি করতে পারেন।
  • কীচেইনে "সিস্টেম" নির্বাচন করুন এবং আপনার নতুন শংসাপত্রটি খুঁজে পাওয়া উচিত। শংসাপত্রের জন্য প্রসঙ্গ মেনুটি ব্যবহার করুন, "তথ্য পান" নির্বাচন করুন, "বিশ্বাস" আইটেমটি খুলুন এবং "কোড সাইনিং" "সর্বদা বিশ্বাস" তে সেট করুন।
  • শংসাপত্রটি ব্যবহার করার জন্য আপনাকে অবশ্যই "কীচেইন অ্যাক্সেস" অ্যাপ্লিকেশনটি ত্যাগ করতে হবে এবং বর্তমান চলমান "টাস্কগ্যাটেড" প্রক্রিয়াটি মেরে "টাস্কগ্যাটেড" পরিষেবাটি পুনরায় চালু করতে হবে। বিকল্পভাবে আপনি আপনার কম্পিউটার পুনরায় চালু করতে পারেন।
  • শেষ পর্যন্ত আপনি জিডিবিতে স্বাক্ষর করতে পারেন:

    sudo codesign -s gdb-cert /usr/local/bin/ggdb

    sudo ggdb ./myprog


4
টোটগ্যাটেড নোট কিলিং প্রক্রিয়াটি আরম্ভ হয়নি। প্রয়োজন: সূডো লঞ্চক্টল লোড / সিস্টেম
বেন

উপরোক্ত পুনরায় আরম্ভ করা টাস্কগ্যাটেড - তবে সিয়েরায় পুনরায় বুট না করে এখনও কাজ করে নি, দুঃখের সাথে।
নীল ম্যাকগিল

16

সমস্যাটি হ'ল আপনি রুট ব্যবহারকারী হিসাবে লগ ইন করেন নি (যা আপনি চান না)। অ্যাক্সেসের অনুমতি পাওয়ার জন্য আপনাকে জিডিবিতে একটি শংসাপত্র তৈরি করতে হবে। এই টিউটোরিয়ালটি অনুসরণ করুন এবং আপনার ভাল হওয়া উচিত ...

http://sourceware.org/gdb/wiki/BuildingOnDarwin

অন্য সমস্ত কিছু যদি ব্যর্থ হয় তবে কেবল ব্যবহার করুন: sudo gdb executableFileName


4
এখানে টিউটোরিয়ালটি সেরা কাজ করেছে। অ্যাপটিতে codesign -s gdb-cert $(which gdb)স্বাক্ষর করতে কেবল চালাতে হয়েছিল gdb
cevaris

ওএসএক্স 10.12.5 এ যে কেউ চেষ্টা করছেন তার পক্ষে কেবল নিশ্চিত হয়ে, আপনি উভয়ই বিল্ডিংঅনডারউইন লিঙ্কে বর্ণিত পদক্ষেপগুলি অনুসরণ করতে হবে এবং রুট ব্যবহারকারীতে স্যুইচ করার পরে জিডিবি চালাতে হবে।
অ্যাডজয়েন্ট প্রফেসরফ্যালকন 21

7

এই ত্রুটিটি আমার জন্য অদৃশ্য হয়ে যাওয়ার জন্য এই লিঙ্কটির স্পষ্ট এবং সবচেয়ে বিশদ ধাপে ধাপ ছিল had

আমার ক্ষেত্রে আমার কাছে "সিস্টেম" কী হিসাবে কী থাকতে হবে অন্যথায় এটি কাজ করে না (যা প্রতিটি url উল্লেখ করে না)।

taskgatedপুনরায় চালু করার জন্য হত্যার একটি কার্যকর (এবং দ্রুত) বিকল্প।

আমি এই প্রক্রিয়াটি শুরু করার আগে ম্যাকপোর্টগুলি আনইনস্টল করেছি এবং বর্তমান জিডিবি ব্যবহার করে আনইনস্টল করেছি brew uninstall gdb


এটি আমার পক্ষে কাজ করেছে। রেফারেন্সের জন্য +1 brew
ট্রিগম্যান

3

এল ক্যাপ্টেনের পক্ষে এটি কাজ করার জন্য আমার এই আদেশের দরকার ছিল:

sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer

2

আমি এই টিউটোরিয়ালটি অনুসরণ করেছি এবং সবকিছু ঠিক আছে।


2

ম্যাকোসএক্সএলএলডিবিতে কোড স্বাক্ষরিত হওয়া দরকার। ডিবাগ এবং রিলিজ বিল্ডস lldb_codesign নামের একটি কোড স্বাক্ষরকারী শংসাপত্র ব্যবহার করে কোড সাইন সেট করে।

If you don't have one yet you will need to:
- Launch /Applications/Utilities/Keychain Access.app

- In Keychain Access select the "login" keychain in the "Keychains"
  list in the upper left hand corner of the window.

- Select the following menu item:

    Keychain Access->Certificate Assistant->Create a Certificate...

- Set the following settings

    Name = lldb_codesign
    Identity Type = Self Signed Root
    Certificate Type = Code Signing

- Click Continue
- Click Continue
- Click Done
- Click on the "My Certificates"
- Double click on your new lldb_codesign certificate
- Turn down the "Trust" disclosure triangle

    Change:
        When using this certificate: Always Trust

- Enter your login password to confirm and make it trusted

The next steps are necessary on SnowLeopard, but are probably because of a bug
how Keychain Access makes certificates.

- Option-drag the new lldb_codesign certificate from the login keychain to
  the System keychain in the Keychains pane of the main Keychain Access window
  to make a copy of this certificate in the System keychain.  You'll have to
  authorize a few more times, set it to be "Always trusted" when asked.
- Switch to the System keychain, and drag the copy of lldb_codesign you just
  made there onto the desktop.
- Switch to Terminal, and run the following:

sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer

- Right click on the "lldb_codesign" certificate in the "System" keychain (NOT
  "login", but the one in "System"), and select "Delete" to delete it from
  the "System" keychain.
- Reboot
- Clean and rebuild lldb and you should be able to debug.

That should do it.

[দ্রষ্টব্য: - lldb ম্যাকটিতে জিডিবি হিসাবে ব্যবহৃত হয়]]


2

এখানে একটি সত্যিই দরকারী গাইড যা আমার সমস্যার সমাধান করেছে (ওএসএক্স 10.13.6)।

  1. কীচেন অ্যাক্সেস খুলুন
  2. মেনুতে, কীচেন অ্যাক্সেস> শংসাপত্র সহকারী> একটি শংসাপত্র তৈরি করুন খুলুন
  3. এটিকে একটি নাম দিন (যেমন জিডিবিসি)
    • পরিচয়ের ধরণ: স্ব স্বাক্ষরিত রুট
    • শংসাপত্রের প্রকার: কোড স্বাক্ষর
    • চেক করুন: আমাকে ডিফল্টগুলি ওভাররাইড করুন
  4. এটি আপনাকে অনুরোধ না করা পর্যন্ত চালিয়ে যান: "এর জন্য একটি অবস্থান নির্দিষ্ট করুন ..."
  5. সিস্টেমে কীচেইনের অবস্থান সেট করুন
  6. একটি শংসাপত্র এবং ঘনিষ্ঠ সহকারী তৈরি করুন।
  7. সিস্টেম কীচেইনে শংসাপত্রটি সন্ধান করুন, ডানদিকে ক্লিক করুন> তথ্য পান (বা কেবল এটি ডাবল ক্লিক করুন)
  8. বিশ্বাস প্রসারিত করুন, সর্বদা বিশ্বাসের জন্য কোড সাইনিং সেট করুন
  9. টার্মিনালে টাস্কগেট পুনঃসূচনা: কিল্ল টাস্কগেটেড
  10. codesign -fs gdbc /usr/local/bin/gdbটার্মিনালে চালান : এটি রুট পাসওয়ার্ডের জন্য জিজ্ঞাসা করে

1

এই নির্দেশাবলী ওএসএক্স হাই সিয়েরার জন্য কাজ করে এবং রুট (ইয়াক!) হিসাবে জিডিবি চালানো এড়ায়। আমি সম্প্রতি ওএসএক্স 10.13.2 থেকে 10.3.3 এ আপডেট করেছি। আমি মনে করি এটি তখনই যখন জিডিবি 8.0.1 (ইনস্টল করা ডাব্লু / হোমব্রিউ) আমার জন্য ব্যর্থ হতে শুরু করে।

অন্য লোকের নির্দেশে আমার অসুবিধা হয়েছিল। বিভিন্ন নির্দেশাবলীর পরে, সমস্ত কিছু ছিল গোলযোগ। তাই আমি নতুন করে শুরু করলাম। আমি এই নির্দেশাবলী কমবেশি অনুসরণ করেছি ।

গণ্ডগোল পরিষ্কার করুন:

  1. brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
  2. ইন Applications-> Utilities-> Keychain Accessআমি সব আগের GDB সার্টিফিকেট ও কী মুছে দিয়েছেন (নিশ্চিত করুন যে আপনি জানেন করা তুমি এখানে কি করছ!)। এটি প্রয়োজনীয় কিনা তা স্পষ্ট নয়, তবে যেহেতু আমি অন্যান্য নির্দেশাবলীর সাহায্যে সেই শংসাপত্রগুলি এবং কীগুলি তৈরি করার চেষ্টা করতে শুরু করেছি আমি যাইহোক সেগুলি মুছে ফেলেছি। আমার লগইন এবং সিস্টেমে চাবি এবং শংসাপত্র ছিল।

এখন জিডিবি পুনরায় ইনস্টল করুন।

  1. brew install gdb
  2. এর মধ্যে Keychain Access, মেনু Keychain Access-> Certificate Assistant-> এ যানCreate a Certificate
  3. "আমাকে ডিফল্টগুলি ওভাররাইড করতে দিন" এবং চেক করুন
Name : gdb-cert
Identity Type: Self Signed Root
Certificate Type : Code Signing

[X] Let me override defaults
  1. 1 ম শংসাপত্রের তথ্য পৃষ্ঠায়:
Serial Number : 1
Validity Period (days): 3650
  1. ২ য় শংসাপত্রের তথ্য পৃষ্ঠায়, ইতিমধ্যে পূরণ করা ক্ষেত্রগুলি বাদে আমি সমস্ত ক্ষেত্র ফাঁকা রেখেছি।

  2. কী পেয়ার তথ্য পৃষ্ঠায়, আমি খেলাপিগুলি ছেড়ে দিয়েছি

Key Size : 2048
Algorithm : RSA
  1. কী ব্যবহার এক্সটেনশন পৃষ্ঠায়, আমি ডিফল্টগুলি চেক করে রেখেছি।
[X] Include Key Usage Extension
[X] This extension is critical
Capabilities:
[X] Signature
  1. প্রসারিত কী ব্যবহারের এক্সটেনশন পৃষ্ঠায়, আমি ডিফল্টগুলি চেক করে রেখেছি।
[X] Include Extended Key Usage Extension
[X] This extension is critical
Capabilities:
[X] Code Signing
  1. বেসিক সীমাবদ্ধতা সম্প্রসারণ পৃষ্ঠায়, কিছুই পরীক্ষা করা হয়নি (ডিফল্ট)।

  2. সাবজেক্ট অল্টারনেট নেম এক্সটেনশন পৃষ্ঠায়, আমি ডিফল্টটি চেক করে রেখেছি এবং অন্য কিছু যোগ করি নি।

[X] Include Subject Alternate Name Extension
  1. শংসাপত্র পৃষ্ঠার জন্য একটি অবস্থান নির্দিষ্ট করে, আমি সেট করি
Keychain: System
  1. আমি তৈরি ক্লিক করেছি এবং আমার পাসওয়ার্ডের জন্য অনুরোধ জানানো হয়েছিল।

  2. Keychain Accessঅ্যাপটিতে ফিরে এসে আমি Systemডানদিকে ক্লিক করে gdb-certনীচে ড্রপডাউন মেনুতে Trustএসেছি এবং আমি সমস্ত ক্ষেত্রগুলিতে পরিবর্তন করেছি Always Trust

  3. রিবুট করা কম্পিউটার।

  4. টার্মিনালে, আমি দৌড়ে গেলাম codesign -s gdb-cert /usr/local/bin/gdb। জিজ্ঞাসা করা হলে আমি আমার পাসওয়ার্ড প্রবেশ করলাম।

  5. টার্মিনালে, আমি দৌড়ে গেলাম echo "set startup-with-shell off" >> ~/.gdbinit

  6. আমি দৌড়ে গেলাম gdb myprogramএবং তারপরে startজিডিবি কনসোলের মধ্যে। এখানে, আমি বিশ্বাস করি, এটি আমার পাসওয়ার্ডের জন্য আমাকে অনুরোধ করেছিল। তারপরে, পরবর্তী সমস্ত রান, এটি আমার পাসওয়ার্ডের জন্য অনুরোধ জানায় না।


দুঃখের বিষয়, আমি শীর্ষে ভোট দেওয়া উত্তর এবং আপনার উত্তর দুটিই করেছি এবং এখনও একই ত্রুটি বার্তাটি দেখতে পাচ্ছি। আমার কাছে ম্যাকোস ক্যাটালিনা সংস্করণ 10.15.4 এবং জিডিবি 9.1 রয়েছে।
জে সুলিভান

@ জয়সুলিভান +1 আমারও একই সমস্যা
ইরিসিস

1

এটি একটি অদ্ভুত পদ্ধতির তবে এটি আমার জন্য কাজ করেছে (ম্যাকওস হাইসিয়ার 10.13.3)। ক্লিওন ইনস্টল করুন। এটি জিডিবি সহ আসে। একবার টার্মিনাল ব্যবহার করে জিডিবি চালান। আপনার ইউএসআর / স্থানীয় / বিন / জিডিবি প্রোগ্রামটি অনুলিপি করুন। সাইন ইন, সুডো ইত্যাদির সমস্যা নেই


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