ভালগ্র্যান্ড ডিবাগ ত্রুটি করে


18

আমি অনলাইনে টিউটোরিয়ালের জন্য অনুসরণ করার চেষ্টা করছি জানুন সি দ্য হার্ড উপায়

তবে ভালগ্রিন্ড স্থাপনের পরে (আমি অন্যান্য লিঙ্কগুলি অনুসরণ করেছি যা উবুন্টু 12.04-এ ভ্যালগ্রিন্ড স্থাপনে সহায়তা করে), যখন আমি সি এক্সিকিউটেবলকে ডিবাগ করার চেষ্টা করি তখন আমি নিম্নলিখিত ত্রুটিগুলি পাই find

ayusman@ayusman-ubuntu:~/lcthw$ valgrind ./ex4
==1984== Memcheck, a memory error detector
==1984== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==1984== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==1984== Command: ./ex4
==1984== 

valgrind:  Fatal error at startup: a function redirection
valgrind:  which is mandatory for this platform-tool combination
valgrind:  cannot be set up.  Details of the redirection are:
valgrind:  
valgrind:  A must-be-redirected function
valgrind:  whose name matches the pattern:      strlen
valgrind:  in an object with soname matching:   ld-linux-x86-64.so.2
valgrind:  was not found whilst processing
valgrind:  symbols from the object with soname: ld-linux-x86-64.so.2
valgrind:  
valgrind:  Possible fixes: (1, short term): install glibc's debuginfo
valgrind:  package on this machine.  (2, longer term): ask the packagers
valgrind:  for your Linux distribution to please in future ship a non-
valgrind:  stripped ld.so (or whatever the dynamic linker .so is called)
valgrind:  that exports the above-named function using the standard
valgrind:  calling conventions for this platform.  The package you need
valgrind:  to install for fix (1) is called
valgrind:  
valgrind:    On Debian, Ubuntu:                 libc6-dbg
valgrind:    On SuSE, openSuSE, Fedora, RHEL:   glibc-debuginfo
valgrind:  
valgrind:  Cannot continue -- exiting now.  Sorry.

ayusman@ayusman-ubuntu:~/lcthw$ 

ভ্যালগ্রাইন্ডটি শেষ পর্যন্ত কাজ করতে আমি কি কিছু করতে পারি?

ভার্চুয়াল বক্সে আমার উবুন্টু 12.04 আছে। আমার ল্যাপটপটি একটি উইন্ডোজ 7 64 বিট ওএস।


ভালগ্র্যান্ড বাক্সের বাইরে আমার জন্য ভাল কাজ করেছে, তবে আমি ইতিমধ্যে কোন লাইব্রেরি ইনস্টল করেছিলাম তা বলতে পারি না। valgrind রেপো থেকে পাওয়া যায়। আপনার সঙ্কলন করার দরকার নেই হার্ড পদ্ধতিতে সি শিখার মতো। রেপো থেকে ইনস্টল করা আপনার জন্য নির্ভরতা ইস্যুটি পরিচালনা করবে
রোবটহমানস

উত্তর:


42

আমি মূলত একই বার্তাটি পেয়েছি (বাদে এটি ld-linux-x86-64.so.2প্রতিস্থাপন করা হয়েছে ld-linux.so.2)। আমি apt-getভালগ্র্যান্ড ইনস্টল করেছিলাম তাই libc6-dbg ইতিমধ্যে নির্ভরতা হিসাবে অন্তর্ভুক্ত ছিল।

আমি এখনও এটি পুরোপুরি সমাধান করেছি না, তবে একটি সূত্রটি হ'ল ত্রুটিটি -m32নির্মাণের সময় আমার ব্যবহারের সাথে সম্পর্কিত lates

সুতরাং এটি মনে হবে যে, আমার ক্ষেত্রে সমস্যাটি হ'ল উবুন্টু 12.04-র একটি 64-বিট ইনস্টল তৈরি করার সময়, libc6-dbg (বা এর কিছু উপাদান) এর 32-বিট সংস্করণের অভাব।


সমাধান (আমার ক্ষেত্রে)

আমার জন্য, নিম্নলিখিত কমান্ডটি জিনিসগুলিকে কাজ করেছে ...

sudo apt-get install libc6-dbg:i386

এটি https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/881236 এ আলোচনা করা হয়েছে

দ্রষ্টব্য: প্যাকেজটি libc6-dbg:i386সিনাপটিকের বা কমান্ড-সমাপ্তির মাধ্যমে কোনও উপলভ্য বিকল্প হিসাবে দেখাবে না apt-get- তবে এটি সেখানে ছিল।


আছে: একটি ভাল পরিবর্তন আপনাকে প্রথমে বিল্ডিং সাহায্যের প্রয়োজন করব stackoverflow.com/a/7412698/86967
nobar

এটি সঠিক হিসাবে চিহ্নিত করা উচিত; :i386কী এখানে।
টমাস শিল্ডস

এটি ছিল 32-বিট যে কৌশলটি করেছিল!
কার্ডিন

1
এটি আমার জন্য এটি সমাধান করেছে .. আমি কোনও ভ্রান্ত মেশিনে এই ত্রুটিটি দেখছিলাম। অন্য মন্তব্যকারীরা যেমন বলেছে, এটি সঠিক হিসাবে চিহ্নিত করা উচিত। (libgc-dbg ইতিমধ্যে একটি ভালগ্র্যান্ড নির্ভরতা হিসাবে ইনস্টল করা হয়েছিল, এটিই i386 যে কৌশলটি করেছিল)
কেন

এই উত্তরটি সঠিকভাবে 32 বিট বাইনারিগুলির সাথে ডিল করেছে। এর ত্রুটি বার্তায় libc6-dbgইতিমধ্যে ইঙ্গিত দেওয়া হয়েছিল valgrind
লিজেই

11

ঠিক আছে, আমি ইন্সটলকে লাইবসি 6-ডিবিজি পছন্দ করেছিলাম

sudo apt-get install libc6-dbg

এবং ভালগ্রাইন্ড ঠিকঠাক কাজ করে বলে মনে হচ্ছে।

উবুন্টু ফোরামের লিঙ্কটি ধন্যবাদ:

http://ubuntuforums.org/showthread.php?t=1017692


@ Goaler444 আমি সবে করেছি। মনে রাখার জন্য ধন্যবাদ.
আয়ুষ্মান

অন্যান্য উত্তর পয়েন্ট হিসাবে, sudo apt-get install libc6-dbg:i386বাইনারি ভালগ্রাইন্ড করা হবে (64 বিট বনাম 32 বিট) এর উপর নির্ভর করে সমাধান করা সমাধান হতে পারে ।
লগঅফ

0

আমি এটির সাথে অনেক দীর্ঘ সময় ধরে সংগ্রাম করেছি, এমপি 32 মোডে কাজ করে কম্পাইল করেছিলাম, তবে এটি গাধাতে ব্যথা ছিল, তাছাড়া আমি উদাহরণস্বরূপ -lcrypto ব্যবহার করতে চাইলে আমি 32-বিবিতে ইনস্টল না করে ওপেনসেল ইনস্টল না করে -m32-এ সংকলন করতে পারিনি could ।

সুতরাং আমি প্রচুর অনুরূপ পোস্ট পড়েছি, সাধারণত libc6-dbg ইনস্টল করার পরামর্শ দিয়েছি: i386 ... আমি মনে করি এটি -m32 এর জন্য সমস্যার সমাধান করেছে, তবে আমি যা খুঁজছিলাম তা হ'ল না। সুতরাং দীর্ঘ সময় পরে এই বিষয়টি এলো: https://lists.ubuntu.com/archives/foundations-bugs/2013- নভেম্বার / 173202.html

সুতরাং dpkg -l libc6 * চালানোর চেষ্টা করুন এবং আপনি যদি libc6-amd64 দেখতে পান তবে এটি আপনাকে সহায়তা করতে পারে। তবে সাবধানতার সাথে এটি পড়ুন। পয়েন্ট 2, কারণ আপনি libc6-amd64 প্যাকেজটি সরিয়ে দেওয়ার পরে কোনও আদেশ ব্যবহার করতে সক্ষম হবেন না, সুতরাং একটি লাইভসিডি প্রস্তুত করুন এবং নির্দেশাবলী অনুসরণ করুন :) এটি আমাকে সমস্যার সমাধান করতে সহায়তা করেছে, তবে এটি আমাকে প্রায় 3 ঘন্টা এবং কয়েক মুহুর্তের ভয়ের মুহুর্তগুলি নিয়েছে । আপনি এটি করার আগে আমি আপনার ডেটা ব্যাকআপ করার পরামর্শ দিচ্ছি, কারণ যদি আপনি ব্যর্থ হন তবে সম্ভবত আর কোনও উপায় থাকবে না।

এবং পয়েন্ট 4 এ যত্নশীল হতে হবে! আপনি প্রস্তাবিত কমান্ডটি কেবল লিখতে পারবেন না
ln -s /lib/x86_64-linux-gnu/ld-2.17.so /lib64/ld-linux-x86-64.so.2 কারণ এটি লাইভ সিডি /ফোল্ডারে একটি প্রতীকী লিঙ্ক তৈরি করবে । এছাড়াও আপনাকে lib64 এ লেখার মূল অধিকার থাকতে হবে। সুতরাং আমি এটি কীভাবে করেছি: (লাইভসিডি টার্মিনালের মাধ্যমে আমার ভাঙা ভ্যালগ্রিন্ড ডিস্কটিতে আমার / ফোল্ডারটি ছিল)

1)sudo rm ./lib64/ld-linux-x86-64.so.2 //removing old link

2)sudo ln -s /lib/x86_64-linux-gnu/ld-2.17.so ./lib64/ld-linux-x86-64.so.2

//you refer to the file on the disk with broken linux, but if you wrote just / instead of ./ you would create the link in the liveCD / folder

আশা করি আমি কিছুই ভুলে যাইনি এবং এটি সহায়ক হবে।

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


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