রিলিজ মোডে .NET সমাবেশের জন্য স্ট্যাক ট্রেসে লাইনের নম্বর প্রদর্শন করুন


139

.NET সমাবেশ বিল্ড / রিলিজ মোডে মোতায়েনের জন্য স্ট্যাক ট্রেসে লাইনগুলি প্রদর্শনের কোনও উপায় আছে কি?

হালনাগাদ:

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

স্ট্যাক ট্রেসটিতে লাইন নম্বরগুলি এখনও প্রদর্শিত হচ্ছে না। স্ট্যাক ট্রেসটিতে লাইন নম্বর পেতে আমার কি সমস্ত প্রকল্পের জন্য পিডিবি ফাইল স্থাপন করতে হবে?

কাজ সমাধান

প্রতিটি অ্যাপ্লিকেশনের জন্য পিডিবি ফাইল স্থাপন করা লাইন নম্বর ইস্যুটি স্থির করে।

উত্তর:


147
  • আপনি যেখানে স্ট্যাক ট্রেস লাইন নম্বর দেখতে চান সেই প্রকল্পের বৈশিষ্ট্য উইন্ডোতে যান।
  • বিল্ড "উল্লম্ব ট্যাব" ক্লিক করুন।
  • "মুক্তি" কনফিগারেশন নির্বাচন করুন। DEBUG ধ্রুবক প্যারামিটারটি পরীক্ষা করুন।
  • ইনলাইনড কোড সহ মাঝে মধ্যে ট্রেস ইস্যু এড়ানোর জন্য "অপ্টিমাইজ কোড" প্যারামিটারটি চেক করুন (এই পদক্ষেপটি প্রয়োজনীয় নয়)।
  • উন্নত ... বোতাম টিপুন এবং আউটপুট -> ডিবাগ তথ্য -> পিডিবি-কেবল চয়ন করুন।
  • উত্পন্ন .pdb ফাইলটি সমাবেশের সাথে স্থাপন করুন।

নীচের মন্তব্যে প্রয়োগ করা:

  • অন্য একটি জিনিস যাচাই করতে হবে "প্যাকেজ / প্রকাশিত ওয়েব" বিভাগে "উত্পন্ন ডিবাগ প্রতীকগুলি বাদ দিন" চেকবক্সটিও চেক করা নেই

2
আমাকে কি সমাবেশের সাথে পিডিবি ফাইল স্থাপন করতে হবে?
মাইকেল কনিকনার্ন

7
হ্যাঁ. ডিবাগ প্রতীক এবং লাইন নম্বর সেখানে That's
জন স্যান্ডার্স

5
আপনার যদি না চান তবে আপনি সম্ভবত এই তথ্যটি প্রকাশ করতে চান না। হ্যাঁ, একটি ক্লায়েন্ট সমস্যা ডিবাগ করতে এটি ব্যবহার করুন। তবে আপনি সবসময় এটি করতে চান না কারণ ডিবাগিং তথ্য সংবেদনশীল ডেটা দিতে পারে এবং আক্রমণ আক্রমণকারী হতে পারে। আপনার অ্যাপটি কি তার উপর নির্ভর করে।
i_am_jorf

6
@Carlo: ডিবাগ তথ্য রিলিজ (অপ্টিমাইজ করা) পাশাপাশি কোড সহ কাজ করে, তবে ডিবাগ কিছুটা সীমিত ( stackoverflow.com/questions/113866 )। তবে callstacks যেখানে লেজ কল কারণ কল XXX / অবঃ ক্রম JMP XXX প্রতিস্থাপন করা হয়েছে অনুপস্থিত যাবে inlined কার্যকারিতা ও ocasional পরিস্থিতি ব্যতীত, এমনকি অপ্টিমাইজ কোডে বেশ নির্ভরযোগ্য।
সুমা

12
অন্য একটি জিনিস যাচাই করতে হবে "প্যাকেজ / প্রকাশিত ওয়েব" বিভাগে "উত্পন্ন ডিবাগ প্রতীকগুলি বাদ দিন" চেকবক্সটিও চেক করা নেই
Gaz

17

ভিএস ২০১২-এ আপনাকে সম্পত্তিগুলির প্যাকেজ / প্রকাশ ওয়েব বিভাগে "উত্পন্ন উত্সাহিত ডিবাগ প্রতীকগুলি বাদ দিন" আনচেক করা দরকার।


বা যদি এটি একটি ডেস্কটপ অ্যাপ্লিকেশন হয় তবে নিশ্চিত হয়ে নিন যে পিডিবি ফাইল স্থাপন করা হয়েছে
সিএডি ব্লোক

15

আমার সমাধান

এক্সিকিউটেবল ফাইল যে একই ফোল্ডারে পিডিবি ফাইল অনুলিপি করুন।

এক্সি ফাইলটি চালানোর সময় এখন আমি লাইন নম্বরটি দেখতে পারি।

এই কারণ

http://msdn.microsoft.com/en-us/library/ee416588%28v=vs.85%29.aspx


9

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

এটি একটি ইঙ্গিত হতে পারে যে পদ্ধতিটি আরও ছোট, আরও দানাদার পদ্ধতিতে রিফেক্টর করা দরকার। এক মাপের সমস্ত উত্তর ফিট করে না, তবে এই পদ্ধতিটি স্বল্প মেয়াদে (আমি প্রায়শই রিফ্যাক্টরিংয়ের সময় বাগটি খুঁজে পেয়েছি) এবং দীর্ঘকালীন সময়ে আমাকে ভালভাবে পরিবেশন করে।

শুধু একটি ভাবনা.


এই. এবং যেতে যেতে আরও সূক্ষ্ম দানাতে আরও স্কেচির জায়গায় ক্যাচ ফেলে দিন। যদি অনুমান করা দরকার হয় এবং এই ফাংশনগুলির শুরুতে গার্ডদের বাড়ান।
জেরার্ড অনিল

প্রায়শই বলা হয়ে থাকে এবং সত্য, তবে, এখানে উত্তরাধিকার আছে, নতুন বড় পদ্ধতি লেখার জন্য প্রোগ্রামার রয়েছে এবং কখনও কখনও একটি বৃহত পদ্ধতি আসলে করণীয় সর্বোত্তম জিনিস হয় (এটি বিভক্ত করা বিভ্রান্ত বা YAGNI)। প্লাস, এমনকি একটি 5 লাইন পদ্ধতির জন্য - আপনি নিজের অনুসন্ধানটি 5x সংকীর্ণ করেন - সুতরাং পিডিবিগুলি উত্পাদনের ক্ষেত্রে প্রয়োজনীয় মন্দ যা আপনি প্রতীক সার্ভার ব্যবহারের ব্যথা না
নিলে

3

আপনার বিল্ড / স্থাপনার প্যাকেজের সাথে ডিবাগ প্রতীকগুলি অন্তর্ভুক্ত করুন।


0

ভিএস ২০০৮ এক্সপ্রেসে, আমি এটি প্রোজেক্ট প্রোপার্টি -> কম্পাইল -> অ্যাডভান্সড কমপাইল অপশনের অধীনে পেয়েছি।


1
তুমি কি পেলে? আপনি যদি একটি সম্পূর্ণ উত্তর পোস্ট করতে না চান তবে আপনি একটি মন্তব্য পোস্ট করতে পারেন।
jumxozizi

-4

এটি প্রতিবার কাজ করে। আপনাকে কেবল স্ট্যাক ট্রেস বার্তাটি সাবস্ট্রিং করতে হবে। রিয়েল ইজি! এছাড়াও, vb.net এ আপনাকে "সমস্ত ফাইল দেখান" করতে হবে এবং পিডিবি অন্তর্ভুক্ত করতে হবে।

'Err is the exception passed to this function

Dim lineGrab As String = err.StackTrace.Substring(err.StackTrace.Length - 5)
Dim i As Integer = 0
While i < lineGrab.Length                   
    If (IsNumeric(lineGrab(i))) Then
        lineNo.Append(lineGrab(i))
    End If
    i += 1
End While

'LineNo holds the number as a string

সি # সংস্করণ:

string lineGrab = error.StackTrace.Substring(error.StackTrace.Length - 5);

int i = 0;
int value;
while (i < lineGrab.Length)
{
    if (int.TryParse(lineGrab[i].ToString(), out value))
    {
        strLineNo.Append(lineGrab[i]);
    }
    i++;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.