"দয়া করে চেক করুন জিডিবি কোডড হয়েছে - টাস্কগেটেড দেখুন (8)" - কিভাবে হোমড্রাবি কোড স্বাক্ষরিত করে জিডিবি ইনস্টল করবেন?


107

আমি ১০.০.৪.২ এর আওতায় আছি এবং হোমড্রাবির সাথে জিডিবি .5.৫.১ ইনস্টল করেছি (প্রেরণায় নতুন বৈশিষ্ট্য যেমন -উথ পাইথন ইত্যাদি সহ একটি নতুন জিডিবি পান ...)

লম্বা গল্পের সংক্ষিপ্ত যখন আমি একটি সি ++ ইলিপস প্রকল্পের মধ্যে ডাবग চালাই:

Error in final launch sequence
Failed to execute MI command:
-exec-run
Error message from debugger back end:
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

কোড সাইনিংয়ের জন্য আমি বিভিন্ন পরামর্শ অনুসরণ করেছি

তাই আমি:

  1. শংসাপত্র সেট আপ করুন
  2. জিডিবি -> কোডগাইন-গুলি জিডিবি-সার্ট / ইউএসআর / স্থানীয় / বিন / জিডিবিতে স্বাক্ষর করুন

যখন আমি পুনরায় Eclipse এ ডিবাগিং চালাচ্ছি আমি উপরের মতো একই ত্রুটি পেয়েছি "(দয়া করে gdb কোডযুক্ত হয় তা দেখুন - টাস্কগেটেড দেখুন (8))"।

আমি যদি পুরনো জিডিবিতে (Eclipse এর gdb অগ্রাধিকারে) / usr / libexec / gdb / gdb-i386-আপেল-ডারউইনকে জিডিবিটি সেট করে থাকি তবে প্রত্যাশা অনুযায়ী ডিবাগিং চলে।

কোন সমাধান / ইঙ্গিত সেখানে আছে?

ধন্যবাদ

Pelle


এটি কি কোনও "সুরক্ষা বৈশিষ্ট্য" নয় - অন্য কথায়, আপনার সিস্টেমটি কেবল সফ্টওয়্যারই স্বাক্ষর করতে কনফিগার করা হয়েছে যা সরকারীভাবে স্বাক্ষরিত হয়েছে? যদি তা হয় তবে আশাকরি সেই বৈশিষ্ট্যটি বন্ধ করার কোনও উপায় আছে ...
ম্যাট পিটারসন

ঠিক আছে আপনার প্রতিক্রিয়াটির জন্য ধন্যবাদ - আমি আপনার সুরক্ষা বৈশিষ্ট্য বিন্দুটি বুঝতে পারি তবে আমার সমস্যাটি হ'ল সাইন কীভাবে করা যায় ... সেখানে একটি অনুরূপ পোস্ট রয়েছে স্ট্যাকওভারফ্লো.com/ প্রশ্নস / ১১২০৫০৫7/gdb-fails-on-mountain-lion যা করেনি আমার জন্য এখনও এটি সমাধান করুন না
pellekrogholt

উত্তর:


136

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

একটি কোড স্বাক্ষরকারী শংসাপত্র তৈরি করতে, কীচেইন অ্যাক্সেস অ্যাপ্লিকেশনটি খুলুন। মেনু কীচেইন অ্যাক্সেস চয়ন করুন -> শংসাপত্র সহকারী -> একটি শংসাপত্র তৈরি করুন ...

শংসাপত্রের জন্য একটি নাম চয়ন করুন (উদাহরণস্বরূপ, gdb-cert), স্বাক্ষরিত রুটে পরিচয় প্রকার সেট করুন, কোড স্বাক্ষর করতে শংসাপত্রের টাইপ সেট করুন এবং আমাকে ডিফল্টগুলি ওভাররাইড করুন নির্বাচন করুন। আপনি শংসাপত্রের স্ক্রিনের জন্য কোনও অবস্থান নির্দিষ্ট করুন না হওয়া পর্যন্ত চালিয়ে যাওয়ার উপর বেশ কয়েকবার ক্লিক করুন, তারপরে সিস্টেমে কীচেইন সেট করুন।

শংসাপত্রটিতে ডাবল ক্লিক করুন, ট্রাস্ট বিভাগটি খুলুন এবং সর্বদা বিশ্বাসে কোড সাইনিং সেট করুন। কীচেইন অ্যাক্সেস অ্যাপ্লিকেশনটি প্রস্থান করুন।

টাস্কগেটেড পরিষেবাটি পুনরায় চালু করুন এবং বাইনারিটিতে স্বাক্ষর করুন।

$ sudo killall taskgated
$ codesign -fs gdb-cert "$(which gdb)"

উত্স http://andresabino.com/2015/04/14/codesign-gdb-on-mac-os-x-yosemite-10-10-2/

ম্যাকোস 10.12 (সিয়েরা) এবং তারপরে, আপনাকে অবশ্যই এটি করতে হবে

Gdb 7.12.1 ব্যবহার করুন বা পরে প্রোগ্রামটি ডিবাগ করার জন্য শেল ব্যবহার থেকে gdb কে অতিরিক্ত রোধ করুন। Gdb এর অভ্যন্তরে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

set startup-with-shell off

আপনি আপনার হোম ডিরেক্টরিতে .gdbinit নামের একটি ফাইলের মধ্যে এই শেষ কমান্ডটিও রাখতে পারেন, আপনি যখন gdb শুরু করেন তখন এটি স্বয়ংক্রিয়ভাবে প্রয়োগ করা হবে

echo "set startup-with-shell off" >> ~/.gdbinit

উত্স: https://sourceware.org/gdb/wiki/ বিল্ডিংঅনডারউইন


6
একটি যাদুমন্ত্র মত কাজ করে. ধন্যবাদ.
pceccon

14
যেমন ওপি নির্দেশ করেছে, এটি তার জন্য কৌশলটি করেনি (এবং আমার পক্ষেও নয়)।
পিভিট

6
দেখে মনে হচ্ছে এটি macOS Sierraস্বাক্ষরিত শংসাপত্রগুলির সাথে কাজ করে না ।
loretoparisi

sudo killall taskgatedআমার সমস্যা সমাধানের মূল চাবিকাঠি
কার্তিকেইন বৈথিলিংম

আমি পদক্ষেপগুলি যথাযথভাবে অনুসরণ করেছি এবং এটি ম্যাকস সিয়েরায় আমার জন্য সুন্দরভাবে কাজ করেছে।
jdg

29

আমি ওএসএক্স ১০.৯-এ জিডিবি তৈরি করেছি এইভাবে কোডাইন না করে ( এখানে বর্ণিত ):

  1. ম্যাকপোর্ট সহ জিডিবি ইনস্টল করুন। (হতে পারে আপনি এড়িয়ে যেতে পারেন)

  2. sudo nano /System/Library/LaunchDaemons/com.apple.taskgated.plist

    থেকে বিকল্প স্ট্রিং পরিবর্তন -sকরতে -spলাইন 22, কর্নেল 27 এ।

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

  4. জিডিবি ব্যবহার করুন। আপনি যদি এটি ম্যাক পোর্ট দিয়ে ইনস্টল করেন তবে আপনাকে অবশ্যই ggdbকমান্ডটি ব্যবহার করতে হবে । অথবা আপনার কনফিগারেশনের ফাইলটিতে একটি নাম তৈরি করেছেন:

alias gdb='ggdb'

এবং তারপর gdb কমান্ড ব্যবহার করুন।


আমি কিছুক্ষণের জন্য এই সমস্যাটিতে চলে আসছি এবং অন্য কীভাবে সাহায্যহীন ছিল তা খুঁজে পেয়েছি। এটা চমত্কার ভাবে কাজ করেছে.
বিল ডিরোজ

@ বিলডিরোজ, আমার জন্য একই।
klm123

@ নিম্রডম, আপনার অর্থ "সুডো জিডিবি"? এটি ম্যাকপোর্টগুলির সাথে "জিজিডিবি" হওয়া উচিত
klm123

1
বিতৃষ্ণা। আমি gdbযেমন চালাতে চাই না sudo। এটি একটি অনিবদ্ধ নিরাপত্তা ঝুঁকির মতো বলে মনে হচ্ছে।
অটোমলস

2
কম্পিউটার পুনরায় আরম্ভ করা যাচ্ছে না। কিছু পুনরায় চালু করার জন্য একটি আদেশ থাকতে হবে!
মাইকেল 18

27

আমি আপগ্রেড হয়েছি gdb 8.3এবং জিনিসগুলি কাজ করতে সক্ষম হইনি। এটি আমাকে সহায়তা করেছে:

codesign --entitlements gdb.xml -fs gdb-cert /usr/local/bin/gdb

বিষয়বস্তু যেখানে gdb.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.cs.allow-jit</key>
    <true/>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.allow-dyld-environment-variables</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
    <true/>
    <key>com.apple.security.cs.disable-executable-page-protection</key>
    <true/>
    <key>com.apple.security.cs.debugger</key>
    <true/>
    <key>com.apple.security.get-task-allow</key>
    <true/>
</dict>
</plist>

আমি এই সমাধানটি এখানে পেয়েছি: https://timnash.co.uk/getting-gdb-to-semi-reliably-work-on-mojave-macos/

দ্রষ্টব্য: এনটাইটেলমেন্ট ছাড়াই আমি gdbকেবল চালাতে সক্ষম হয়েছি sudo


2
আপনি পেলে কি করবেনerror: The specified item could not be found in the keychain.
শ্রীধর সারনোবাত

@SridharSarnobat ব্যবহারের পাইপলাইন এই উত্তরটি প্রথম stackoverflow.com/a/32727069/339146
Panayotis

@ ম্যাক্সিমসার এর উত্তর চেষ্টা করার পরে ব্যর্থ। তাহলে এটি আমার পক্ষে কাজ করে। ম্যাকোএস 10.15.4, জিডিবি 9.2 ব্রুয়ের মাধ্যমে ইনস্টল করা হয়েছে।
ওয়েমিং

@SridharSarnobat: আপনি শংসাপত্র প্রথম তৈরী করতে stackoverflow.com/questions/35020236/...
Akansha

26

আমি জিডিবিতে একই সমস্যাটি অনুভব করেছি। আমি Mac OS X 10.8.5ওরফে মাউন্টেন সিংহের নীচে ছুটছি। আমি জিডিবি সংস্করণ ব্যবহার করছি 7.7.1

আমি নিম্নলিখিত পরীক্ষার সাথে আমার পরীক্ষা প্রোগ্রামটি সংকলন করেছি:

g++ -o gdb-sample.out -g gdb-sample.cpp    

যদি আমি কমান্ডটি প্রবেশ করে gdb sample.out, আমি একই ক্রিপ্টিক ত্রুটি বার্তাটি পাই:

"Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8))"

এই ত্রুটি বার্তাটি একটি লাল রঙের হেরিং।

আমার যে সমাধানটি আমার পক্ষে কাজ করেছে তা হ'ল অতিমাত্রায় ব্যবহারকারীর অ্যাক্টটি ব্যবহার করে কেবল জিডিবি আহ্বান করা:

sudo gdb sample.out. 

এটা আমার জন্য ভাল কাজ করে।

এবং সেদিক থেকে আমি জিডিবি উদাহরণস্বরূপ চালাতে পারি। Sudo ব্যবহার না করেই আউট।

আশা করি এটি অন্যের জন্য সহায়তা করে এবং কাজ করে। আরএসভিপি না দিলে।


1
কেন এটিকে ভোট দেওয়া হয়েছিল তা নিশ্চিত নয়। আমি কমান্ডটি রুট হিসাবে চালিত করেছি (সুডো সহ) এবং এটি কার্যকর হয়েছে।
আইপোগ্রাম

6

এর কোনওটিই আমার পক্ষে কাজ করেনি এবং আমাকে দীর্ঘ দৌড়ে যেতে হয়েছিল। এটি কার্যকর করার জন্য আমি যে পদক্ষেপগুলি করেছি তার পুরো তালিকা এখানে রয়েছে।

  1. জিডিবিতে স্বাক্ষর করতে একটি শংসাপত্র তৈরি করুন।

দুর্ভাগ্যক্রমে, সিস্টেম শংসাপত্র আমাকে দিয়েছে Unknown Error = -2,147,414,007 যা খুব সহায়ক so KeyChain Assistant -> Create certificate ->

বাছুন login,gdb-cert ,Code Signing

সিস্টেম কীচেইনে শংসাপত্র অনুলিপি করুন / সরান (পাসওয়ার্ড লিখুন)

  1. শংসাপত্রটি নির্বাচন gdb-certকরুন Get info- ) ক্লিক করুনTrust Always
  2. অক্ষম startup-with-shell

কনসোলে প্রবেশ করুন: set startup-with-shell off

কনফিগারেশন মনে রাখবেন: echo "set startup-with-shell off" >> ~/. gdbinit

  1. রুট ব্যবহারকারী সক্ষম করুন

যান System Preferences> - Users & Groups-> Unlock it-> Login Options-> Network Account Server-> Join-> Unlock it-> Edit(মেনু) ->Enable Root User

  1. sudo killall taskgated
  2. শেষ পর্যন্ত জিডিবি সাইন করুন

codesign -fs gdb-cert "$(which gdb)"

  1. রুট ব্যবহারকারী অক্ষম করুন (পদক্ষেপ 4)
  2. এখনও কাজ না হলে পুনরায় বুট করুন। (অন্য কিছু যদি না কাজ করে তবে সম্ভবত এটি ইতিমধ্যে কাজ করে)

পুনশ্চ. আমি ব্যবহার শেষ করছি lldbকারণ এটি কেবল কাজ করে ( টিউটোরিয়াল )


5

যে কেউ সিয়েরা 10.12.6 (এবং উপরে) এবং হোমব্রু ব্যবহার করছেন, /usr/local/bin/gdbতার /usr/local/Cellar/gdb/8.0/bin/gdb(বা যে কোনও সংস্করণ যেমন, উদাহরণস্বরূপ ) একটি প্রতীকী লিঙ্ক8.0.1 ) এর ।

আপনাকে লিঙ্ক এবং লক্ষ্য উভয়কেই কোডাইন করতে হবে:

codesign -fs gdb-cert /usr/local/bin/gdb
codesign -fs gdb-cert "/usr/local/Cellar/gdb/8.0/bin/gdb"

বা, যদি আপনার greadlink(এর মাধ্যমে ইনস্টল করা brew install coreutils) থাকে:

codesign -fs gdb-cert $(which gdb)
codesign -fs gdb-cert $(greadlink -f $(which gdb))

1
আপনি কি হাই সিয়েরায় চেষ্টা করেছেন? এটি আমার জন্য ও / এস: 10.13.6
rustMagnet

3

আমি ভাবছি যে এখানে বিশ্বব্যাপী সর্বাধিক ভোট দেওয়া উত্তরের উত্তর রয়েছে কিছু অনিচ্ছাকৃত পরিণতি ঘটেছে কিনা।

পুরানো টাইগার কনভেনশন সক্ষম করার পরিবর্তে, টাস্কেগেট সাইনড কোডটি চালানোর অনুমতি দেয়। সুতরাং কেবল উত্তরের মতো জিডিবি-র জন্য একটি স্বাক্ষরিত সার্টিফিকেট নেওয়া ভাল

এর পরে আমি sudoজিডিবি ব্যবহার করতে সক্ষম হয়েছি । আপনার যদি জিডিবি ডাব্লু / ও সুডো ব্যবহারের প্রয়োজন হয় তবে সম্ভবত এই লিঙ্কটি সাহায্য করবে যদিও অস্বীকৃতি, আমি এখনও এটি চেষ্টা করি নি কারণ ব্যবহার sudoকরা এখনকার জন্য একটি ঠিক সমাধান `


3

এটি সম্পর্কিত নাও হতে পারে। আপনি gdb এর পরিবর্তে macos এ lldb ব্যবহার করতে পারেন। জিডিবি ইনস্টল করতে আপনার এই ঝামেলা দরকার নেই।

lldb ( http://lldb.llvm.org ) ইতিমধ্যে হাই সিয়েরায় ডিফল্টরূপে ইনস্টল করা আছে


0

আমি এই सारটি অনুসরণ করতে সুপারিশ করতে পারি: https://gist.github.com/gravitylow/fb595186ce6068537a6e9da6d8b5b96d#file-codesign_gdb-md

কাটিয়ে ওঠার কৌশল সহ: unknown error = -2,147,414,007এখানে বর্ণিত শংসাপত্র তৈরির সময়: https://apple.stackexchange.com/a/309123

মন্তব্য:

homebrewপ্যাকেজ হিসাবে gdb ইনস্টল করার পথটি এমন কিছু হওয়া উচিত:/usr/local/Cellar/gdb/9.2/bin/gdb

এবং এখানে যেমন মত csrutil enable --without debugএকটি বার্তা সৃষ্টি করবে requesting unsupported configuration: https://totalfinder.binaryage.com / সিস্টেমে- অন্তর্গঠন- সুরক্ষা

টেস্ট:

  sw_vers -productVersion
10.13.6

  gdb ./a.out
GNU gdb (GDB) 9.2
...
Thread 3 hit Breakpoint 1, main () at main.c:14
14          data_t d = {0};

-1

জিডিবি 8.3;

আমার সমস্যাটি উপরের লোকটির মতোই, সমাধান করা হয়েছে

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