এখনও শুরু না হওয়া প্রক্রিয়ার সাথে আমি কীভাবে ভিজুয়াল স্টুডিও সংযুক্ত করব?


91

আমার কাছে .NET প্রোগ্রাম রয়েছে যা কিছু কারণে ভিজ্যুয়াল স্টুডিও থেকে চালানো যায় না (এক্সেল 2010 টেমপ্লেট প্রকল্প থেকে তৈরি এক্সেল ফাইল) যার জন্য আমাকে স্টার্টআপ ইভেন্টগুলি ডিবাগ করতে হবে।

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

অবশ্যই Thread.Sleep(1000)আমার স্টার্টআপ ইভেন্টগুলিতে একটি যুক্ত করা আমাকে ভিজুয়াল স্টুডিওতে প্রক্রিয়াটি সংযুক্ত করার জন্য কিছুটা সময় দেওয়ার জন্য প্রশ্নটির বাইরে!

উত্তর:


99

আসলে আপনি পারেন; আপনি এটির সাথে সংযুক্ত হন না, আপনি এটি শুরু করেন। আপনার প্রকল্পের বৈশিষ্ট্যগুলিতে, ডিবাগিং ট্যাবে, আপনি "কমান্ড" পাঠ্য বাক্সে যে প্রোগ্রামটি সংযুক্ত করতে চান তার পথটি নির্দিষ্ট করুন।

আপনি "কমান্ড আর্গুমেন্টস" বাক্সে প্রোগ্রামটির জন্য যে কোনও কমান্ড-লাইন যুক্তি সন্নিবেশ করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন

"সংযুক্তি" "না" তে সেট করা আছে তা নিশ্চিত করুন।


6
ভাল সমাধান, তবে কেবল লক্ষ্য করুন যে এফ 5 টি আঘাত করা এই ক্ষেত্রে কাজ করে না। পরিবর্তে সম্পর্কিত প্রকল্পটি ডান ক্লিক করুন এবং প্রসঙ্গ মেনু থেকে 'ডিবাগ> নতুন উদাহরণ শুরু করুন' ক্লিক করুন।
হারমান কর্ডেস

4
F5 কাজ করার জন্য, আপনার প্রকল্পটি সমাধানের সূচনা প্রকল্প হতে হবে। এটি করতে, সমাধান এক্সপ্লোরারটিতে প্রকল্পের ডান ক্লিক করুন এবং "স্টার্টআপ প্রকল্প হিসাবে সেট করুন" নির্বাচন করুন।
টিবি

4
এছাড়াও যদি আপনার প্রোগ্রামটির কিছু বাহ্যিক নির্ভরতা থাকে তবে আপনাকে "ওয়ার্কিং ডিরেক্টরি" পরিবর্তন করতে হবে।
প্রিয়ঙ্ক

"নেটিভ কোড ডিবাগিং সক্ষম করুন" (প্রকল্পের বৈশিষ্ট্যগুলি → ডিবাগডিবাগারগুলি সক্ষম করুন ) চেক করার প্রয়োজন হতে পারে ।
পিটার মর্টেনসেন

এবং 40 টি প্রকল্প সহ আপনি সম্পূর্ণ সমাধানের জন্য এটি কীভাবে করেন?
টনি ট্যানুস

23

আমি একটি বাহ্যিকভাবে তৈরি প্রসেসে সি ++ প্লাগইনটি ডিবাগ করছি যা স্টার্টআপে একটি ব্যতিক্রম ছুঁড়ে ফেলে দিয়ে ক্র্যাশ হয়েছিল এবং এটি আমার জন্য পুরোপুরি কাজ করেছে:

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

এখন প্রক্রিয়াটি আরম্ভ করুন এবং ভিজ্যুয়াল স্টুডিও ডিবাগারটি সাথে সাথে সংযুক্ত হবে, ব্যতিক্রমগুলি ধরা এবং ব্রেকপয়েন্টগুলিকে আঘাত করবে।


হাজার বার হ্যাঁ!
itlittlejohn

আমি একটি অচলাবস্থা পেয়েছি। এটি যখন আমার টার্গেটটি চালু হয়েছিল তখন প্রশাসককে অনুরোধ করেছিল এবং পিডাব্লুডি টাইপ করে বনাম পুনরায় চালু করার পরে রিটাচ চলে যায়। অ্যাডমিন অউথ ছাড়া কেবল বনামে রিটাচ থাকে।
এরিক

4
আমার জন্য কাজ করে না। ক্রাশটি ইতিমধ্যে ঘটে যাওয়ার পরে এটি এখনও অনেক দেরিতে সংযুক্ত। এটি প্রতি সেকেন্ডে একবারে বিদ্যমান প্রক্রিয়াগুলি যাচাই করে দেখা যাচ্ছে যা এই অ্যাপ্লিকেশনটির জন্য সম্পূর্ণ অর্থহীন।
রিভ

22

আপনার যদি ভিজুয়াল স্টুডিও 2017-2019 থাকে তবে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ফাইল> ওপেন> প্রকল্প / সমাধান
  2. আপনার .exe চয়ন করুন
  3. ডিবাগ> ডিবাগিং শুরু করুন

অন্যান্য পরামর্শের চেয়ে অনেক সহজ: আপনাকে প্রকল্পের বৈশিষ্ট্যগুলির সাথে ঝামেলা করতে হবে না এবং কোনও এক্সটেনশনের প্রয়োজন নেই।


তবে আপনাকে ভিজ্যুয়াল স্টুডিওতে বলতে হবে যে ডিবাগিং প্রতীকগুলি কোথায় তা যদি এটি স্বয়ংক্রিয়ভাবে খুঁজে না পায়
ম্যাট থমাস

4
5 সেকেন্ডের মধ্যে দ্রুত করতে সক্ষম, আমি এটি পছন্দ করি। ধন্যবাদ
কমরেডজাইকুল

4
আমার এক্সিকে চালু করা হয়েছিল, তবে কোনও ব্রেকপয়েন্ট সেট করা যায়নি। আমার কি করা উচিৎ?
এরিক

4
@ এরিক যদি উপরের আমার মন্তব্যটি এটিকে সম্বোধন করে না তবে আমি মন্তব্যটির পরিবর্তে এটি একটি প্রশ্ন হিসাবে জিজ্ঞাসা করার পরামর্শ দিচ্ছি। আপনার সমস্যাটি আরও দৃশ্যমানতা পাবে এবং আপনার নির্দিষ্ট পরিস্থিতি ব্যাখ্যা করার সুযোগ পাবেন। তারপরে আমাদের কী জানাবেন!
ম্যাট টমাস

11

আমি যখন অনুরূপ কিছু খুঁজছিলাম তখন আমি এই উত্তরটি পেয়েছি। আমার ক্ষেত্রে, আমি কেবলমাত্র আমার প্রকল্পের স্টার্টআপ প্রোগ্রাম হিসাবে এক্সিকিউটেবলকে ব্যবহার করতে পারি না কারণ এটি খুব নির্দিষ্ট পরিবেশে শুরু করা দরকার যা আমি সহজেই পুনরুত্পাদন করতে পারি না (নাম: সাইগউইন থেকে শুরু হয়েছিল)।

আমি মর্স্ট্রেঞ্জের পরামর্শ অনুসারে রিটাচ এক্সটেনশনের দিকে একবার নজর দিয়েছি এবং যে কোনও কিছুতে এক্সটেনশনের সাথে খুব অনুরূপ সংযুক্তি ... তবে আমার এক্সিকিউটেবলটি এক্সটেনশানগুলি অবহিত এবং সংযুক্ত করার জন্য খুব দ্রুত বন্ধ হয়ে গেছে বলে মনে হয়েছিল।

পরিশেষে যা আমাকে সাহায্য করেছিল তা হ'ল: https://stackoverflow.com/a/4042545/1560865 , যা এমএসডিএন নিবন্ধটি উল্লেখ করে যে কীভাবে: ডিবাগারটি স্বয়ংক্রিয়ভাবে চালু করুন , যা ঘুরিয়ে নিম্নলিখিত পদক্ষেপগুলি তালিকাভুক্ত করে:

  1. রেজিস্ট্রি এডিটর (regedit) শুরু করুন।
  2. রেজিস্ট্রি সম্পাদকটিতে, HKEY_LOCAL_MACHINE ফোল্ডারটি খুলুন।
  3. HKEY_LOCAL_MACHINE \ সফ্টওয়্যার \ মাইক্রোসফ্ট \ উইন্ডোজ এনটি \ বর্তমান রূপান্তর \ চিত্র ফাইল সম্পাদন বিকল্পে নেভিগেট করুন।
  4. ইন ইমেজ ফাইল সম্পাদন বিকল্প ফোল্ডার যেমন আবেদন আপনি ডিবাগ করতে চাই, নাম সনাক্ত myapp.exe । আপনি যদি অ্যাপ্লিকেশনটি খুঁজে না পান তবে আপনি ডিবাগ করতে চান:
    ক। চিত্র ফাইল এক্সিকিউশন অপশন ফোল্ডারে ডান ক্লিক করুন এবং শর্টকাট মেনুতে, নতুন কী ক্লিক করুন ।
    খ। নতুন কীটি ডান-ক্লিক করুন এবং শর্টকাট মেনুতে, নামটি ক্লিক করুন । গ। আপনার অ্যাপ্লিকেশনটির নামে কী নামটি সম্পাদনা করুন; myapp.exe , এই উদাহরণে।
  5. Myapp.exe ফোল্ডারটি ডান ক্লিক করুন এবং শর্টকাট মেনুতে, নতুন স্ট্রিং মানটি ক্লিক করুন ।
  6. নতুন স্ট্রিংয়ের মানটি ডান ক্লিক করুন এবং শর্টকাট মেনুতে, নামটি ক্লিক করুন।
  7. নামটি পরিবর্তন করুন debugger
  8. নতুন স্ট্রিংয়ের মানটি ডান ক্লিক করুন এবং শর্টকাট মেনুতে Modify ক্লিক করুন । সম্পাদনা করুন স্ট্রিং ডায়লগ বক্স প্রদর্শিত হবে।
  9. ইন মূল্য ডেটা বক্স টাইপ vsjitdebugger.exe
  10. ঠিক আছে ক্লিক করুন ।
  11. থেকে রেজিস্ট্রি মেনু ক্লিক থেকে প্রস্থান করুন
  12. Vsjitdebugger.exe ধারণকারী ডিরেক্টরিটি অবশ্যই আপনার সিস্টেমের পথে থাকা উচিত। এটি সিস্টেমের পথে যুক্ত করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
    ক। খুলুন কন্ট্রোল প্যানেল ক্লাসিক দর্শন, এবং দুবার-ক্লিক সিস্টেম
    খ। উন্নত সিস্টেম সেটিংস ক্লিক করুন ।
    গ। ইন সিস্টেমের বৈশিষ্ট্য , ক্লিক করুন অ্যাডভান্সড ট্যাব।
    d। উপর উন্নত ট্যাব এ ক্লিক করুন পরিবেশ ভেরিয়েবল
    e। ইন পরিবেশ ভেরিয়েবল ডায়লগ বক্স অধীন সিস্টেম ভেরিয়েবল নির্বাচন পাথ , তারপরে সম্পাদনা বোতাম।
    চ। সম্পাদনা সিস্টেমের পরিবর্তনশীল মধ্যে Inডায়ালগ বক্স, ভেরিয়েবল মান বাক্সে ডিরেক্টরি যুক্ত করুন । তালিকার অন্যান্য এন্ট্রি থেকে এটি আলাদা করতে একটি সেমিকোলন ব্যবহার করুন।
    ছ। সিস্টেমের পরিবর্তনশীল ডায়ালগ বাক্সটি বন্ধ করতে ওকে ক্লিক করুন
    এইচ। পরিবেশ পরিবর্তনশীল ডায়ালগ বক্সটি বন্ধ করতে ওকে ক্লিক করুন । i। সিস্টেম বৈশিষ্ট্য ডায়ালগ বাক্সটি বন্ধ করতে ওকে ক্লিক করুন ।
  13. এখন, আপনার অ্যাপ্লিকেশন শুরু করতে যে কোনও পদ্ধতি ব্যবহার করুন। ভিজ্যুয়াল স্টুডিও অ্যাপ্লিকেশনটি শুরু এবং লোড করবে।

আশা করি এটি ভবিষ্যতে অন্য কাউকে সহায়তা করবে!


4
ভিএস (2019 অবধি
en-

3

যদি কোনও প্রক্রিয়া না থাকে তবে ভিজ্যুয়াল স্টুডিও এটির সাথে সংযুক্ত করতে পারে না।

তবে আপনি আপনার প্রকল্পের স্টার্টআপ প্রোগ্রামটিকে আপনার প্রকল্পের আউটপুট ব্যতীত অন্য কোনও কিছু হিসাবে সেট করতে পারেন।


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

"নেটিভ কোড ডিবাগিং সক্ষম করুন" (প্রকল্পের বৈশিষ্ট্যগুলি → ডিবাগডিবাগারগুলি সক্ষম করুন ) চেক করার প্রয়োজন হতে পারে ।
পিটার মর্টেনসেন 15

3

আপনি একটি বার্তাবক্স প্রদর্শন করতে পারেন, এটি অ্যাপ্লিকেশনটিকে ব্লক করবে, তারপরে আপনি প্রক্রিয়াটিতে ডিবাগারটি সংযুক্ত বা পুনরায় সংযুক্ত করুন এবং চালিয়ে যাওয়ার জন্য ওকে ক্লিক করুন:

MessageBox.Show("Attach process to debugger and click ok!");

আপনি এটি ফর্ম কনস্ট্রাক্টারে যুক্ত করতে পারেন (যদি আপনি উইনফর্মগুলি ব্যবহার করেন), সুতরাং এটি উপাদানগুলির সূচনা ব্যতীত অন্য কোনও কিছুর আগেই কার্যকর করা হবে:

public MainForm()
{
    InitializeComponent();
    MessageBox.Show("Attach process to debugger and click ok!");
}

আপনি যখন আপনার ডিবাগিংটি শেষ করেন, তখন সেই লাইনটি মন্তব্য করুন।


3

এর মাধ্যমে আপনি আপনার কোড থেকে ডিবাগারটি শুরু করতে পারেন

public static void Main(string[] args)
{
  System.Diagnostics.Debugger.Launch();
}

তবে আপনার অ্যাপ্লিকেশনটি শিপিংয়ের আগে এই লাইনটি সরিয়ে ফেলবেন না। নিশ্চিত হতে আপনি সংকলক পতাকা ব্যবহার করতে চান:

    public static void Main(string[] args)
    {
      #if debug
      System.Diagnostics.Debugger.Launch();
      #endif
    }

4
আপনি যে কোনও বাহ্যিক প্রক্রিয়াটির জন্য আপনার অ্যাপ্লিকেশনটি চালু করার অপেক্ষায় রয়েছেন এমন সমস্ত ক্ষেত্রেই এটির গ্রহণযোগ্য উত্তর হওয়া উচিত।
ট্র্যাভেলিংফক্স

2

একটি সামান্য সমাধান যা অনেক লোকের উপযোগী হতে পারে।

  • প্রথম কোডের কোডটি যা এক্সিটি চলবে, এই আদেশটি যুক্ত করুন

    সিস্টেম.ট্রেডিং.ড্রেড.স্লিপ (২০০০০)

এটি কোনও কিছু প্রক্রিয়াজাতকরণ শুরু করার আগে 20 সেকেন্ডের জন্য এক্সকে ঘুমিয়ে তুলবে। তারপরে প্রক্রিয়াটির সাথে সংযুক্ত হওয়ার জন্য আপনার কাছে 20 সেকেন্ড রয়েছে, যা ctrl + alt + p দিয়ে দ্রুত করা যায়, তারপরে প্রক্রিয়াটি সন্ধান করুন, এবং সংযুক্তিতে প্রবেশ করুন enter

উত্তরের বেশি নয় তবে আমার জন্য একটি ট্রিট কাজ করেছে: -)


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