ভিজ্যুয়াল স্টুডিওতে কীভাবে বাহ্যিক শ্রেণীর গ্রন্থাগার প্রকল্পগুলি ডিবাগ করা যায়?


137

আমার কাছে একটি প্রকল্প (এ) রয়েছে যা একটি বহিরাগত প্রকল্প (বি) শ্রেণীর পাঠাগার থেকে কোনও সমাবেশকে উল্লেখ করে যা অন্য বনাম সমাধানে অবস্থিত।

প্রকল্প এ থেকে প্রোগ্রাম চালানোর সময় আমি কীভাবে খ থেকে ক্লাস লাইব্রেরিটি ডিবাগ করতে পারি তা আমি এখনও বুঝতে পারি নি যে প্রকল্প বিতে ডিবাগ তথ্য ইত্যাদির জন্য আমাকে সক্ষম করার মতো কিছু আছে যাতে আমি এ থেকে ডিবাগের সময় ধাপে প্রবেশ করতে পারি?

আগাম ধন্যবাদ.

উত্তর:


202

জাস্ট মাই কোড (জেএমসি) অক্ষম করার চেষ্টা করুন।

  • সরঞ্জাম -> বিকল্প -> ডিবাগার
  • "শুধু আমার কোড সক্ষম করুন" আনচেক করুন

ডিফল্টরূপে ডিবাগার বিশ্বের দৃষ্টিভঙ্গি কোডে সীমাবদ্ধ করার চেষ্টা করে যা কেবলমাত্র আপনার সমাধানের মধ্যে রয়েছে। এটি অনেক সময় সত্যই হেল্পফুল তবে আপনি যখন ডিবেগ কোডটি চান যা আপনার সমাধানে নেই (যেমন আপনার পরিস্থিতিটি রয়েছে) আপনার এটি দেখতে জেএমসি নিষ্ক্রিয় করতে হবে। অন্যথায় কোডটি বাহ্যিক হিসাবে বিবেচিত হবে এবং আপনার দৃষ্টিকোণ থেকে বেশিরভাগ ক্ষেত্রে লুকানো থাকবে।

সম্পাদনা

আপনি যখন আপনার কোডটি ভঙ্গ করছেন তখন নিম্নলিখিত চেষ্টা করুন try

  • ডিবাগ -> উইন্ডোজ -> মডিউল
  • আপনার আগ্রহী প্রকল্পটির জন্য ডিএলএল সন্ধান করুন
  • ডান ক্লিক করুন -> লোড প্রতীক -> আপনার অন্যান্য প্রকল্পের জন্য .PDB এর পথটি নির্বাচন করুন

2
নির্দিষ্ট চেকবক্সটি ইতিমধ্যে চেক করা ছিল। আমি যা লক্ষ্য করেছি তা হ'ল এটি বাহ্যিক গ্রন্থাগারের কোনও পদ্ধতিতে প্রবেশ করে না, তবে যখন আমি কোনও ইন্টারফেসের অংশ, এমন কোনও পদ্ধতিতে কল করার চেষ্টা করি তখন এটি ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধীরে ধীরে আসে।
কনস্টান্টিনোস

আপনার কোনও ডিএলএল এর বৈশিষ্ট্যগুলিতে যেতে হবে এবং কপি লোকালটি সত্যতে সেট করা আছে তা নিশ্চিত হতে পারে। অন্যথায়, মডিউলগুলি আপনার রেফারেন্সের জন্য .pdb সন্ধান করতে সক্ষম হবে না।
ব্রায়ান রায়নার

শুধু আমার কোড কোনও পার্থক্য বলে মনে হচ্ছে না (আমি এটি সক্ষম করেও বহিরাগত কোডে ঝাঁপিয়ে দিতে পারি), তবে ডিবাগারে মডিউলটি খুঁজে পেতে সহায়তা করে।
থিওপরেটর

3
এই ফোল্ডারে কোনও মিলের প্রতীক ফাইলটি পাওয়া যায় নি।
ক্রিস্টিন

1
যদি আপনার কাছে রেফারেন্সযুক্ত মডিউলটির জন্য পিডিবি ফাইল না থাকে, তবে রিশার্পারটি ডিবাগ / উইন্ডোজ / মডিউলগুলির ডান-ক্লিক মেনুতে "রিসার্পার ডিকম্পিলার সহ লোড সিম্বলস" বিকল্পটি ব্যবহার করে বাইনারিগুলি ডেকম্পাইল করতে ব্যবহার করা যেতে পারে। খুব শক্তিশালী.
এমিলাস্ট

12

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


10

এর পথ ধরে

প্রকল্প A

C:\Projects\ProjectA

প্রকল্প B

C:\Projects\ProjectB

এবং প্রজেক্টবি এর ডিল আছে

C:\Projects\ProjectB\bin\Debug\

মধ্যে ডিবাগ করার ProjectBথেকে ProjectA, নিম্নোক্ত কাজ

  1. কপি Bএর Dll সঙ্গে Dll এর .PDBকাছে ProjectAএর সংকলন ডিরেক্টরি।
  2. এখন ডিবাগ ProjectA। কোডটি সেই অংশে পৌঁছে যায় যেখানে ডিবেগ করার সময় আপনাকে ডিএল এর পদ্ধতি বা ইভেন্টগুলি ইত্যাদি কল করতে হবে, F11dll এর কোডটিতে প্রবেশ করতে টিপুন ।

দ্রষ্টব্য: .পিডিবি ফাইলটি অনুলিপি করবেন না


5

আমি ভিজ্যুয়াল স্টুডিওর দুটি উদাহরণ চালাচ্ছি - একটি বাহ্যিক dll এবং একটি প্রধান অ্যাপ্লিকেশনটির জন্য।
বাহ্যিক dll এর প্রকল্পের বৈশিষ্ট্যগুলিতে, নিম্নলিখিতগুলি সেট করুন:

ইভেন্টগুলি তৈরি করুন:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"

ডিবাগ:

  • বাহ্যিক প্রোগ্রাম শুরু করুন: C:\<path-to-main>\bin\debug\<AppName>.exe

  • ওয়ার্কিং ডিরেক্টরি C:\<path-to-main>\bin\debug

এইভাবে, যখনই আমি বাহ্যিক dll তৈরি করি তখন এটি মূল অ্যাপ্লিকেশনটির ডিরেক্টরিতে আপডেট হয়। যদি আমি বাহ্যিক dll এর প্রকল্প থেকে ডিবাগ হিট করি - মূল অ্যাপ্লিকেশনটি চালিত হয় তবে ডিবাগারটি কেবল বাহ্যিক dll এ ব্রেকপয়েন্টগুলিতে আঘাত করে। যদি আমি মূল প্রকল্প থেকে ডিবাগটি হিট করি তবে মূল অ্যাপ্লিকেশনটি সর্বাধিক নির্মিত নির্মিত বাহ্যিক dll দিয়ে চলে তবে এখন ডিবাগারটি মূল প্রকল্পে ব্রেকপয়েন্টগুলিকেই আঘাত করে।

আমি বুঝতে পেরেছি যে একজন ডিবাগার দুজনের জন্যই কাজটি করবেন তবে আমি দু'জনকে এভাবে সোজা রাখা আরও সহজ মনে করি।


1

[মার্টিন বেকেটের মতে, যে লোকটি আমাকে এই উত্তরটি পাঠিয়েছে]

আপনি একটি বাহ্যিক লাইব্রেরিতে ডিবাগ করতে পারেন।

প্রকল্পের সেটিংস ট্যাবটিতে 'সোর্স কোড' ক্ষেত্রে 'ভিজ্যুয়াল স্টুডিও ডিরেক্টরিগুলি' অনুসন্ধান করুন ওপেনসিভি উত্সের পথ অন্তর্ভুক্ত করুন। তারপরে নিশ্চিত হয়ে নিন যে প্রতিটি ডিবাগ dll এর জন্য .pdb ফাইলগুলি dll এর মতো একই ডিরেক্টরিতে রয়েছে।


0

আমার প্রকল্পে (বি) ব্রেকপয়েন্টগুলি আঘাত হানে না বলে আমারও একই সমস্যা ছিল। আমার সমাধানটি ছিল প্রকল্পটি (বি) পুনর্নির্মাণের জন্য তখন ডিবেগ প্রজেক্ট (এ) হ'ল ডেলগুলি আপডেট করার প্রয়োজন ছিল।

ভিজ্যুয়াল স্টুডিও আপনাকে বাহ্যিক লাইব্রেরিতে ডিবাগ করার অনুমতি দেবে।


0

নিউগেট রেফারেন্স

অনুমান করুন -প্রজেক্ট_এ (প্রজেক্ট_এ.ডিএলএল উত্পাদন করে) -প্রজেক্ট_বি (প্রজেক্ট_বি.ডিএল উত্পাদন করে) এবং প্রজেক্ট_বি নুগেট প্যাকেজ দ্বারা প্রজেক্ট_এর রেফারেন্সগুলি কেবল প্রজেক্ট_এ.ডিএল, প্রজেক্ট_এ.পিডিবি ফোল্ডারে প্রজেক্ট_বি / প্যাকেজগুলিতে অনুলিপি করুন। কার্যকরভাবে এটি / বিনটিতে অনুলিপি করা উচিত।

এখন প্রোজেক্ট_এ ডিবাগ করুন। কোডটি সেই অংশে পৌঁছে যায় যেখানে ডিবেগ করার সময় আপনাকে ডিএল এর পদ্ধতি বা ইভেন্টগুলি ইত্যাদি কল করতে হবে, DL এর কোডটিতে প্রবেশ করতে F11 চাপুন।

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