የሚከተሉት ልጥፍ የኮምፒውተር መተግበሪያዎች ለ መተግበሪያዎች: Piotr Sarna እና Cynthia Dunlop በ Blogs That Get Read (የተተግበሪያዎች ለ መተግበሪያዎች መተግበሪያዎች መተግበሪያዎች: መተግበሪያዎች ያግኙን) ክፍል 8 ን ውጭ ነው. መተግበሪያዎች ለተግበሪያዎች መጻፍ: መተግበሪያዎች ያገኛሉ የ Bug Hunt በ X ውስጥ ያውቃል እንዴት የተመሰረተ ነው አግኙን ግምገማዎች በ Trends Non-Marketing የምርት መስፈርቶች Benchmarks እና የሙከራ ውጤቶች አግኙን የ "Bug Hunt" ጦማር ልጥፍ ሞዴል የኮምፒውተር ዓለም የኮምፒውተር ታሪክ ጋር ተመሳሳይ ነው. ይህ አንድ ሞዴል, አንድ ዋና ስዕል, ወዲያውኑ ስዕሎች, አንድ ጃክሪት (እናንተ), አንድ መዳረሻ (እናንተም አብዛኛውን ጊዜ, ከሁለት ሳምንታት በፊት በመጀመሪያ ላይ ስዕል መውሰድ በኋላ) ነው. ይህ አስደናቂ ነው, የኮምፒውተር መዳረሻ ላይ ይጠበቃል, እና አስደናቂ ስዕል ጓደኝነት, ወይም የኮምፒውተር ጓደኛ ጋር ይጀምራል. 8.1 ትክክለኛነት አንድ bug-hunting ጽሑፍ መጻፍ ከሁለቱም ዓላማዎች ይሰጣል, የጉዞ ስኬት ላይ የተወሰነ, በዚያም መጨረሻው ስኬት ተመሠረተ, እና አንዳንድ ሌሎች ባህሪያት. 8.1.1 የታወቀ አጠቃቀም ነገር ግን ምን በጣም አስፈላጊ ነው, ይህ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ጊዜ ተመሳሳይ ነው. ከባድ ከባድ ከባድ በጣም አስደናቂ ጥቁር አረንጓዴ አንድ መሣሪያ የመጀመሪያው ጊዜ ተስማሚ ሊሆን ይችላል, ነገር ግን የተወሰነ አይደለም ሌላ መሣሪያ, በጣም ውጤታማ ሊሆን ይችላል ከ 2014 ጀምሮ አንዳንድ ጦማር ልጥፎች, እነሱም መጀመሪያው ምክንያት ለመውሰድ ያደርጋል ሁሉም እነዚህን ደረጃዎች ሌሎች ተመሳሳይ ጥያቄዎች (እናንተም ከሁለት ሳምንታት ከሁለት ሳምንታት ይሆናል) ለወደፊቱ debugger በጣም አስፈላጊ ናቸው. ከሁለት ሳምንታት ወይም ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁለት ሳምንታት ከሁ 8.1.2 Global bug awareness ይህ የኮምፒዩት ጊዜ ነው! እርስዎ የተቀየደው የባድ በግልጽ በፕሮጀክትዎ ላይ አይነቶች አይደለም. ነገር ግን, እርስዎ የሚፈልጉትን ቋንቋ, የኮምፒዩተሮች መካከል አንዱ ወይም ልዩ የኮምፒዩተሮች ውስጥ አንድ ትኩረት ምክንያት ነው. የእርስዎን ጽሑፍ በእርግጥ ሌሎች ሰዎችን "አይ, እኛም ትክክለኛውን ተመሳሳይ መተግበሪያ አላቸው - እኔን አስደናቂ ይሆናል ..." ይህ በተጨማሪም የቴክኖሎጂ ተስማሚውን ቡድን ሌሎች ሰዎችን ተመሳሳይ ስህተት ለመፍጠር መንገድ ይመልከቱ ይችላሉ. እንደዚህ ምክንያት, አንድ አስደናቂ bug እንዴት ለመፍጠር አንድ ታሪክ መጻፍ በዓለም ዙሪያ ተመሳሳይ ክፍል አንዳንድ ሌሎች bugs ለመፍጠር ሊሆን ይችላል. ይህ አንድ superpower ነው! ይህ ዓላማ በባህር ጋር የተገናኙ ከሆነ በተለይም አስፈላጊ ነው: Bloeding Edge ሶፍትዌር ሃርድዌር ግምገማ አነስተኛ የ Open Source ማህበረሰብ እነዚህን ፕሮጀክቶች በአብዛኛው ክወናዎች ውስጥ መተግበሪያ ሊሆን ይችላል. ይህ ፕሮጀክቶች በአብዛኛው ፕሮጀክቶች ውስጥ መተግበሪያ ሊሆን ይችላል. ይህ ፕሮጀክቶች በአብዛኛው ፕሮጀክቶች ውስጥ መተግበሪያ ሊሆን ይችላል. ይህ ፕሮጀክቶች በአብዛኛው ፕሮጀክቶች ውስጥ መተግበሪያ ሊሆን ይችላል. ይህ ፕሮጀክቶች በአብዛኛው ፕሮጀክቶች ውስጥ ሊሆን ይችላል. 8.1.3 አግኝቷል የቴክኒካዊ ዓለም ፍላጎት – ለስላሳ መጠን – ለእናንተ እና የእርስዎን ተለዋዋዋጭዎች ጥሩ ነው. እንደ ጓደኝነት እና ምግቦች ለመፍጠር እንደ አንዳንድ አስደሳች ነገር ለማግኘት ፍላጎት ያቀርባል, የእርስዎን እና የእርስዎን ግምገማዎች ይረዳል: It's educational. Your audience can presumably learn something by reading how you achieved your goal. It broadens your professional network. People intrigued by similar technologies and challenges will likely reach out to you as we outlined in Chapter 1. It feels good. There’s no shame in acknowledging that attention is one of the benefits of telling the world that you did something. It yields free criticism – hopefully constructive criticism, but valuable either way. The (often illusory) sense of anonymity on the Internet makes it easy to criticize others, so you can count on lots of comments and nitpicks after your article goes public. But after filtering out the vitriol, you can often learn something new, or even revisit your whole approach to the problem. 8.2 ግምገማዎች Bug hunting አንድ ቴክኒካዊ ጥያቄ ነው, እና bug hunting ጦማር ልጥፎች ለ አጠቃቀም በእርግጥ እንደ ቴክኒካዊ ነው. ተመሳሳይ ልምድ ጋር ሰዎች (እነርሱም በአጠቃላይ ስርዓቶች ውስጥ ተመሳሳይ ቦርሳዎችን ለመውሰድ ወይም ለመውሰድ ሊሆን ይችላል) የእርስዎን ሥራ ምርት bugs ማግኘት እና ለመፍጠር ነው ሰዎች ሰዎች ተመሳሳይ bug ጓደኛ ውስጥ ይህ ክፍል የጎን ለመከላከያ ሊሆን ይችላል ሰዎች (የጎን የሚሆን ቴክኖሎጂ ወይም የጎን ለመከላከያ መሣሪያዎች ላይ የተሰራ ሰዎች) ንድፍ ንድፍ ንድፍ ንድፍ የእርስዎ ኩባንያዎች Professional Internet critics specialized in unsolicited advice እርስዎ የሚፈልጉትን ሰው ያገኛሉ: በአሁኑ ጊዜ የቴክኒካዊ መስፈርቶች እና የኮምፒዩተር መተግበሪያዎች እና የኮምፒዩተር መተግበሪያዎች እና የኮምፒዩተር መተግበሪያዎችን ያውቃሉ አይችልም ከሆነ, እርስዎ ይመልከቱ እና ያውቃሉ. አይችልም ከሆነ, ብቻ እነርሱም ያውቃሉ እንደነጻ ያውቃሉ. ስለዚህ, አንድ bug-hunting ጦማር ልጥፍ እንደ አንድ "የ intermediate level" (እና በላይ) መዳረሻዎች እና "የመጋገብ" አይችልም. ከፍተኛ የቴክኒካዊ መስፈርቶች ጥሩ ናቸው, ምክንያቱም ጽሑፍን በአጠቃላይ አጠቃላይ ተስማሚ ማድረግ አይፈልግዎታል. እርስዎ የሚፈልጉ ከሆነ ማንኛውም አክሮኒየም አክሮኒየም ለማሻሻል እና የሚፈልጉትን የይፕሮይነሮች ያቀርባል. 8.3 Examples ከባድ ውስጥ, ከባድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ ጓድ እዚህ የ "Bug Hunt" ሞዴል ይጠቀማቸዋል ጦማር ልጥፎች አንዳንድ ትክክለኛ ምሳሌዎች ናቸው, እንዲሁም Piotr ስለ እያንዳንዱን አስተያየት. 8.3.1 NUMA አፈጻጸም bug ለማግኘት ጂ.ኤስ.ኤስ. ጂ.ኤስ.ኤስ. Author: ፎቶ ፎቶ ፎቶ ( ) Source: https://www.scylladb.com/2021/09/28/hunting-a-numa-performance-bug/ Summary ይህ ጽሑፍ የ NUMA (Non-Uniform Memory Access) ንድፍ ጋር ዘመናዊ ሃርድዌር ላይ ተመሳሳይ አፈጻጸም ተመሳሳይነት ያካትታል. ይህ ተመሳሳይነት ከሁለተኛ ደረጃ ላይ ተመሳሳይነት ሊሆን ይችላል, ይህም ይበልጥ ማረጋገጥ አስቸጋሪ ነበር. የ ጽሑፍ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለተኛ ጊዜ ከሁለት ጊዜ ከሁሉም ጊዜ ከሁሉም ጊዜ ከሁሉም ጊዜ Commentary ይህ የግል ጦማር ልጥፎች መካከል ከፍተኛ ደረጃ ነው. ይህ በጣም የቴክኒካዊ ነው, ነገር ግን በተመሳሳይ ጊዜ ቀላል ነው. ዝቅተኛ ተሞክሮ የሚታወቀው መግቢያዎች አንዳንድ ዝርዝሮች ማውረድ ይችላሉ እና ደግሞ ብዙውንም ያውቃሉ. የዚህ ችግሮች ለመካትትት ሁሉም ተሞክሮዎች የምስክር ወረቀቶች ናቸው, እና በእርግጥ የቅርብ ጊዜ መግቢያ ውስጥ ጥቅም ላይ ይችላሉ. የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር 8.3.2 Why Is My Rust Build So Slow? አሞስ ቬንጋር Author: ፎቶ ፎቶ ፎቶ ( Source: https://fasterthanli.me/articles/why-is-my-rust-build-so-slow) Summary ይህ ውብ ጦማር ልጥፍ ለ Rust ፕሮጀክቶች የኮምፒል ጊዜ ችግሮች ይመራል. ይህ የኮምፒውተር ራስን እንዴት ለመፍጠር, የኮምፒውተር ሂደት በስተካከሉ ክፍሎች ይቀበሉ, እና እያንዳንዱ ክፍሎች ምን ጊዜ ይወስዳል እና ምን ያህል ይሞክራል. ይህ የኮምፒውተር መጠቀም ይችላሉ የኮምፒውተር መሣሪያዎች ፎቶዎች, ኮድ ስሪፕቶች, እና ዝርዝርዎች ጋር ሙሉ ነው. የ ጽሑፍ መጨረሻው በእርግጥ ማንኛውም የኮምፒውተር ልጥፍ አይደለም, ነገር ግን በእርግጥ በእርግጥ እርስዎ የ Rust የኮምፒውተር ጊዜ ጋር ደንበኞች ከሆነ ከሁሉም የኮምፒውተር የኮምፒውተር የኮምፒውተር ሂደት Commentary አንድ መደበኛ የቴክኒክ ጦማር ልጥፍ ጋር ተለዋዋጭ, ይህ አንድ ጓደኛ ነው - በግልጽ ተስማሚ ልጥፍ ውስጥ! ይህ በቀላሉ አንድ ተስማሚ መቁረጥ አንድ ሰዓታት ይወስዳል, እና እርስዎ በሦስት ወይም አራት ክፍሎች ውስጥ መድሃኒት የሚፈልጉት ነገር ይሆናል, ስሜት እና diplopia መከላከያ ለማግኘት ስሜት ይወስዳል. ብዙ የቴክኖሎጂ ጽሑፎች በ 4 እስከ 6 ደቂቃዎች ውስጥ በጣም ብዙ መረጃ ለማሳየት ይሞክሩ. እና ይህ ለስማርትፎች ላይ የተመሠረተ የአካባቢው የአካል ብስክሌት ርዝመት ለማረጋገጥ ተስማሚ ነው, አብዛኞቹ የቴክኖሎጂ ጽሑፎች ከሁሉም ጊዜ የ cartoon break ጋር በመላው ቀን በመጫወት ይልቅ. ይህ ጽሑፍ አንድ ልዩ ስሜት ያቀርባል, Author's alter ego, Cool Bear, ይህም መደበኛውን ቀጥተኛ አስደሳች አስተያየት ያካትታል - (የብዙ) ግምገማ ሂደት ውስጥ የኮምፒውተር ያካትታል. አግኙን ይህ አይነት አንድ bug hunting ጦማር ልጥፍ ደግሞ የ Rust compiler debugging ቴክኖሎጂዎች አንድ ኤንሲፒፒፒፒፒፒፒፒክ ሆኖ ይጠቀማል. እኔ ይህን ገጽታን አግኝቷል, በእኔ ፕሮጀክቶች ውስጥ የመገናኘት ጊዜዎችን እንዴት ማረጋገጥ እንደሚቻል ማንኛውም ጊዜ መቁረጥ ያስፈልጋል. መጨረሻው ደግሞ በጣም አስቸጋሪ ነው: ግፊት ለመፍጠር እና በመጨረሻው የኮምፒውተርዎች አንድ አስቸጋሪ መፍትሔ ጋር ይሰጣል helyett, ይህ በቀላሉ ተስማሚ ጥቅል ነው. 8.3.3 እንዴት አንድ የኮድ መስመር አንድ 24-ኮር ደንበኞች አንድ የ Laptop በላይ ቀላል ነበር Pjotr Kołaczkowski Author: ፎቶ ፎቶ ፎቶ ፎቶ ፎቶ ፎቶ ( ) Source: https://pkolaczk.github.io/server-slower-than-a-laptop/ Summary የፕሮግራም ልጥፍ በአካባቢው benchmarks በ CPU ኮርቶች ብዙ ጋር ማሽንዎች ላይ የፕሮግራም ማቀዝቀዣን እንዴት ያካትታል እንዴት ያካትታል. የቅጂ መብት አንድ አፈጻጸም ልምድ ይሰጣል, አንዳንድ profiling ይሰራል, ከዚያም የቴክኒካዊ CPUs በኮች ውስጥ እንዴት ይሰራል እና የፕሮግራም የኬይስ ማቀዝቀዣ እንዴት ያስተካትታል አንዳንድ ማስታወቂያዎችን ይሰጣል. የተመሠረተ ማቀዝቀዣ በፕሮግራም መሣሪያዎች መካከል የተለያየ ሁኔታ መጠን ለመቀነስ የፕሮግራም መሣሪያዎች መካከል የፕሮግራም ማቀዝቀዣ መጠን ለመቀነስ ነው. Commentary ይህ ጦማር ልጥፍ አንድ ሌላ ታዋቂ ምሳሌ ነው. በውስጡ ስም አንድ ትንሽ clickbaity ነው, ነገር ግን በአጠቃላይ የኮምፒውተር ሶፍትዌር የተመሠረተ የኮምፒውተር መቆጣጠሪያ ሶፍትዌር ከባድ ሊሆን አይችልም. የቴክኒክ ዝርዝር Chojnowski 's NUMA ጦማር ልጥፍ (በዚህ ክፍል ውስጥ ከባድ የተመሠረተ) ከብዙ በላይ በአጠቃላይ ያውቃል. ይህ ጽሑፍ እንደ "L3 cache access takes how many nanoseconds on an average on Intel Xeon" እንደ ነገሮች ላይ ያተኮሩ ነው. ይህ ጥሩ ተግባር ነው; እነዚህን ዝርዝሮች ያውቃሉ, እነርሱም ያውቃሉም. ማን ያውቃል - እሱም አንድ ቀን አንድ ሌሎች ፕሮጀክት ውስጥ አንድ አፈጻጸም ምግቦች ለመፍጠር ይረዳል. በአጠቃላይ, ጽሑፍ የኮምፒውተር መዋቅር እና አፈጻጸም ላይ አንድ ትንሽ ቀላል ጋር ተስማሚ ያውቃል. 8.3.4 የ Tricky Direct Memory Leak ከ መውሰድ ዘዴዎች Sanchay Javeria Author: ፎቶ ፎቶ ፎቶ ፎቶ ( ) Source: https://medium.com/pinterest-engineering/lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2 Summary Pinterest's development team shares their experience hunting a stream processing code memory leak that led to cascading failures in their distributed system. It goes over debugging techniques for the Java environment and then finally pinpoints a bug in application code that caused the memory leak. Commentary This is a classic bug hunting article – so much so that it could be used as a blog post template for hunting down almost any issue in Java code. It contains the customary investigation steps, along with screenshots from observability tools. Also following custom, the culmination paragraph is called "The Fix." It explains that the culprit was yet another memory leak issue caused indirectly by garbage collection mechanisms in Java. Hint: It always is! በዚህ መለያ ውስጥ, መጨረሻው በእርግጥ በዓለም ላይ አስደሳች ስኬት አይደለም, ነገር ግን በእርግጥ የኮርፖሬሽኖች ፍላጎቶች ጋር ተስማሚ ነው. እኔ የኮርፖሬሽኖች አብዛኛውን ጊዜ "አይ, ከጀመር ከሁለቱም ያውቃል" ቀጥተኛ በኋላ ያውቃል. 8.3.5 ZFS በእርግጥ የእኔ የ CPU አግኝቷል ብራንድ ግሪግ Author: ፎቶ ፎቶ ፎቶ ፎቶ ፎቶ ( ) Source: https://www.brendangregg.com/blog/2021-09-06/zfs-is-mysteriously-eating-my-cpu.html Summary The blog post describes a hunt for the cause of mysterious higher-than-expected CPU usage. It shows how to narrow the candidates down to a single function call with analysis tools and concludes with a surprising performance bug in ZFS – a file system implementation. Commentary ምልክት ራስን አስደሳች ነው, ነገር ግን በ URL ውስጥ አንድ ነገር በእርስዎ ላይ ይሰጣል: ይህ የ Flames Graph መፈጠራች Brendan Gregg ነው! ይህ የግል ብራንድ በጣም በጣም አስፈላጊ ምን ያህል አንድ ታላቅ ምሳሌ ነው. “Brendan Gregg” መመልከት ጊዜ ከባድ ገጽ አስደሳች ነው ... እና በእርግጥ በጣም ዝቅተኛ ጥቅል ላይ እራስ አይደለም. በ Gregg ልምድ ተመልካች, ችግሮች ልውውጥ በእርግጥ flame graphs ጋር ተኳሃኝ ነው. የ ሮድ ምክንያት በጣም አስደናቂ ነው, እና Gregg በከፍተኛ ወዲያውኑ እና አስደናቂ መንገድ ያካትታል. የ ጦማር ልጥፍ ደግሞ በጣም ትክክለኛ ነው: የሦስት ደቂቃዎች ጥበብ, እርስዎ የ flame graph screenshots ለመመልከት ከባድ ጊዜ ማከናወን ቢሆንም. ይህ በእርግጥ ታዋቂ የቴክኒክ ዝርዝሮች, ጠቃሚ ምክሮች, እና ብዙ የታወቀትን ለመፍጠር ከብዙ ደቂቃዎች መጻፍ አይፈልግም. More recent “Bug Hunt” blog posts on writethat.blog ተጨማሪ የ "Bug Hunt" ጦማር ልጥፎች ይመልከቱ on writethat.blog on writethat.blog 8.4 ባህሪያት የ Bug Hunt ጦማር ልጥፎች በእርግጥ የ Bug Hunt ጦማር ጋር ተለዋዋዋጭ ሊሆን ይችላል - ነገር ግን እነዚህን ባህሪያት አጠቃቀም ይሆናል: እነዚህን ታሪክ በክሮኒካዊ ደረጃ ይሰጣሉ, ከሁሉም ጊዜ ከክሮኒካዊ ዱቄት መታወቅ ጊዜ, ከሁሉም ጊዜ ከሁሉም ጊዜ ይሰጣሉ. እነርሱም በመጀመሪያ ላይ በባድ (እና በባድ) ላይ ያተኮሩ ናቸው. እነርሱ በነጻ የኮምፒውተር መሳሪያዎችን በመስመር ላይ ያውቃሉ, ስለዚህ የኮምፒውተር መሳሪያዎች መጫወት እና መጫወት ይችላሉ. እነርሱ በአብዛኛው ጊዜ በተመለከተ የቴክኖሎጂዎችን ያውቃሉ (ወይም ይወዳሉ) የተመሠረተ ልምድ አምራቾች ላይ የተመሠረተ ናቸው. They offer technical nuggets that could be interesting now, lifesaving later እያንዳንዱ እያንዳንዱ ላይ ይመልከቱ. 8.4.1 Crafted chronologically (እርስዎ ንድፍ ላይ አንድ መተግበሪያ ወይም አዝማሚያ የሚፈልጉ ከሆነ, Generative AI እዚህ ጥሩ ሥራ ያደርጋል). የ መተግበሪያ ክፍሎች በጣም ብዙ ዝርዝሮች ይሰጣሉ እና በእርግጥ መፍትሔ ላይ አንድ ስፖይሊር ማቅረብ አይችልም. አብዛኛውን ጊዜ, እነርሱ ብቻ (እርስዎ የተሻለ አዝማሚያ) ስም ጋር ከሁለቱም ከሁለቱም ጥያቄዎች ይሰጣሉ. አንድ ጊዜ ችግር የተመሠረተ ጊዜ, መዳረሻ ይጀምራል, አብዛኛውን ጊዜ ከሁለቱም (እነርሱም ልምድ) ተሞክሮዎች ከሁለቱም ተሞክሮ ይጀምራል. አስደናቂነት በይነገጽ ልምድ (እነዚህ ክፍል በአጠቃላይ "The Fix" ተመሠረተ ነው) ተከተልበት ጊዜ (እነዚህ ክፍል በይነገጽ ልምድ ይጀምራል) ተመሠረተበት ጊዜ ድረስ ተመሠረተ ነው. የተመሠረተ ልምድ በይነገጽ ልምድ በይነገጽ ይጀምራል - እና አብዛኛውን ጊዜ በይነገጽ ተጠቃሚዎች አንድ ጥቁር ጥቅል. 8.4.2 በሽያጭ ላይ አስቸጋሪ የዚህ ጽሑፍ ውስጥ በጣም ቀላል ክፍሎች የጽሑፍ ልምድ ለማረጋገጥ መንገድ ነው. የጽሑፍ ሂደት ለማሳየት የጽሑፍ ልምድ ከ 80% መጠን ለማሳየት ጥሩ ስህተት ስህተት ነው. ለምሳሌ, እዚህ በጽሑፍ አጠቃቀም ላይ በጽሑፍ ልምድ ላይ የጽሑፍ ልምድ እያንዳንዱ የጽሑፍ ልምድ መጠን ነው: 85% hunt Chojnowski: 83% hunt Wenger: 83% hunt Kołaczkowski: 82% hunt Javeria: 93% hunt Gregg: 8.4.3 Evidence everywhere የ Bug Hunt ጦማር ልጥፎች አብዛኛውን ጊዜ የኮምፒውተር ማረጋገጫዎች ጋር ሙሉ ናቸው. ግራፊዎች, ቁጥርዎች, ግራፊዎች, ስክሪፕቶች እና ኮድ ናሙናዎች ለማየት ይፈልጋሉ. ይህ የኮምፒውተር ጦማርዎን ለመውሰድ እና በከፍተኛ ውፅዓት በፊት የኮምፒውተር ጦማር ለመውሰድ ይፈልጋሉ. ለምሳሌ, እዚህ በፕላስቲክ ጦማር ልጥፎች ውስጥ የሚታወቁትን ጥናት አንዳንድ ናቸው: Chojnowski: Database monitoring graphs (writes per shard), network and disk performance graphs, CPU statistics, flame graphs and instruction-level breakdowns, CPU's performance measuring monitoring unit (PMU) events, እና የተለያዩ የኮድ ማረጋገጫ ተሞክሮዎች Wenger: Cargo building timings, a timeline of compilation units, CPU usage and concurrency graphs, debug information, flame graphs, tracing through Chromium and Perfetto, attempted code fixes, dependency graphs Kołaczkowski: የ benchmarking መሣሪያው ንድፍ, የፕላስቲክ ውጤቶች (የ 4 የኮር Laptop vs. በ 24 የኮር Server ላይ), flame graphs Javeria: Out-of-memory error details, backpressure tests, and multiple forays into memory monitoring (ወንዶች-ወንዶች-ወንዶች-ወንዶች-ወንዶች-ወንዶች-ወንዶች-ወንዶች) Gregg: Flame ግራፊዎች (ወይም ግን!), ZFS መጫን መረጃ, arcstats, እና ሁሉም የኃይል ኮድ, በ GitHub አገናኝ በኩል አግኙን Flame ግራፊዎች በእያንዳንዱ bug hunting ጦማር ልጥፎች ላይ ልዩ ናቸው. እነርሱ የእርስዎን debugging እና አፈጻጸም profiling ሂደት ለማሳየት አንድ ጥሩ መንገድ ይሰጣሉ. እና እነርሱ ተንቀሳቃሽ ናቸው - ተጠቃሚዎች አስደሳች ክፍሎች ወደ ማውረድ ይችላሉ, ብቻ እያንዳንዱ መደበኛ ቅርጽ ጋር ተስማሚ ሁኔታዎች ማጣራት ይችላሉ, እና ብዙ ተጨማሪ. Flame ግራፊዎች እንደ Linux's perf profil ወይም Rust's cargo flame graph ትዕዛዝ እንደ ታዋቂ መሣሪያዎች ውፍረት ለመፍጠር ይችላሉ. 8.4 ባለሙያ ተስማሚ የ Bug-Hunting Articles አብዛኛውን ጊዜ ባለሙያ ተስማሚ ናቸው. የተመሠረተ ጽሑፍ ውስጥ ጥቅም ላይ የቴክኖሎጂ ጥቅል ጋር ተስማሚ (ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ-ወደ- ይህ ሌሎች ጦማር ልጥፍ ሞዴሎች, እንደ "እኛ በ X" (እኛ በ 9 አግኝተዋል) እንደ ሌሎች ጦማር ልጥፍ ሞዴሎች ጋር ተመሳሳይ ነው. በዚህ ሞዴል ላይ ጦማር ልጥፎች ከሁሉም ቴክኖሎጂ ጋር ለመጀመር የሚፈልጉ ሰዎች ይበልጥ ተስማሚ ናቸው እና በአብዛኛው ጊዜ አንድ "የዲሱ ቋንቋ መጀመር" ክፍል ያካትታል. 8.4 የፈጠራ ይህ ሞዴል የሚከተሉትን ጦማር ልጥፎች ለተኮር ቡድን በላይ መተግበሪያዎች በጣም ዝርዝር ሊሆን ይችላል. የባድ ክፍሎች, የባድ መውሰድ, ተመሳሳይ ጥያቄዎችን እንዴት ማረጋገጥ እንደሚቻል በግልጽ ዝርዝር ላይ ይሸፍናል. በተጨማሪም በጣም አስፈላጊ ነው, እነዚህ ክፍሎች ተመሳሳይ መረጃዎች ውስጥ ይሸፍናል: ማንኛውም ጊዜ ተመሳሳይ ምልክቶች ላይ ተመሳሳይ ጥያቄዎች ለመለወጥ ጥቅም ላይ ሊሆን ይችላል. የእርስዎ ጦማር ልጥፎች በእርስዎ ሕይወት ውስጥ ማንኛውም ጊዜ ተመሳሳይ ምልክቶች ጋር ተስማሚ ሊሆን ይችላል. ለምሳሌ, የእኛን ሞዴል ጦማር ልጥፎች እያንዳንዱን ከ መግዛት የሚችሉ የኮርፖሬሽን ዝርዝር ይመልከቱ: The kinds of issues you might encounter with complex memory architecture (NUMA), especially with ARM processors Chojnowski: Ways to improve your Rust build times Wenger: How modern CPUs work under the hood and how the processor caches manage memory Kołaczkowski: Java is evil Javeria: How to apply analysis tools like an absolute expert Gregg: 8.5 የዲስ እና don'ts የተሻለ ጦማር ልጥፎች በጣም ትክክለኛ የባድ ጓደኛዎች ውስጥ የተመሠረተ ናቸው. በመጨረሻም መሳሪያው ለመውሰድ አስደናቂ ስሜት በባድ ጓደኛዎች በፊት የእርስዎን ግምገማዎችን ይመዝገቡ እና የእርስዎን ጓደኛዎች በቀጣዩ ጥያቄን በፍጥነት ለመውሰድ ይረዳሉ. እዚህ የእርስዎን የእርስዎን Bug Hunt ጦማር ልጥፍ ለመፍጠር አንዳንድ ጠቃሚ ምክሮች ናቸው. 8.5.1 ማንኛውም ሰው (እርስዎ ጓደኛ, የእርስዎ ጓደኛ ጓደኛዎች) የእርስዎን አጠቃቀም ከባድ ይሆናል. ይህ በእርስዎ ተጠቃሚዎች ላይ አስደናቂ ተጽዕኖ አላቸው, ወይም ይህን ተጽዕኖ መውሰድ የኮምፒዩተር ስም እና / ወይም በጣም አስፈላጊ የኮምፒዩተር ዋጋ ላይ አስደናቂ ተጽዕኖ ሊሆን ይችላል ከሆነ በጣም አስፈላጊ ነው. Open-source ወይም-source-to-available ፕሮጀክቶች አብዛኛውን ጊዜ ማንኛውም የክፍያ ግምገማዎች (እርስዎ ኮድዎን በ GPL መስፈርቶች እና "copyleft" ግምገማዎች መካከል አንዱ ጋር መድሃኒት ለመጠበቅ አይፈልጉም). ነገር ግን ሁሉም ኮድ የopen-source አይደለም. Before you publish code snippets of your heavily guarded corporate secrets, make sure that your boss and any interested parties are fine with it. Even if you skip the code, your superiors still may be averse to making certain information public, especially if the bug was related to security, or ended with an unfortunate data leak. Use this rule of thumb: Ask first, write and publish later. 8.5.2 የቴክኒካዊ ጥቁር መግቢያ ይሰራል የቴክኒካዊ ዝርዝር ማንኛውም ውስጥ ያስፈልጋል, አዎ, የእርስዎ ጽሑፍ እንደ ኮድ ናሙናዎች, ጥቅም ላይ ትክክለኛ ቴክኖሎጂዎች, ደረጃ-ጥቂት መመሪያዎች, ወዘተ እንደ ዝርዝሮች ከፈለጉ, ብዙ መግቢያዎች ከሰጣቸው ይሆናል. ከሰጣቸውም, እነርሱ የእርስዎን ትክክለኛነት ይወዳሉ. እርስዎ ምርት የተሻለ ሊሆን ይችላል ለማረጋገጥ እባክዎን ከሰጣቸው ሳጥኖች ሊሆን ይችላል? እርስዎ ብዙ የቴክኒክ ዝርዝሮች ያካትታሉ ከሆነ, ተጨማሪ ከሰጣቸው ላይ ስህተት ይችላሉ. technical ከባድ ጓደኝነት ጦማር ልጥፎች ከባድ ጓደኝነት ጦማር ልጥፎች ከባድ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደ 8.5.3 Be brutally honest about all your failures የእርስዎን ፍለጋዎች እና ፍለጋዎች በመጀመሪያ ላይ የእርስዎን ጦማር ልጥፍ ወደ ያውቃሉ የካታርክ ውጤት ያቀርባሉ! እነርሱም ከባድ ጓደኝነት ጽሑፎች ውስጥ በጣም የፈጠራ ቅርጸት ያቀርባሉ. በመጨረሻም, ከባድ ስህተቶች መውሰድ ጥሩ ነው, ነገር ግን ከባድ ሰው ስህተቶች መውሰድ ይበልጥ ጥሩ ነው. የፕላስቲክ ጦማር ልጥፎች አብዛኛውን ጊዜ በይነገጽ መለያዎች እና የፕላስቲክ ጦማር ልጥፎች የተወሰኑ በኋላ ይመዝገቡ. ከሁለቱም ከሁለቱም ከሁለቱም በይነገጽ ጦማር ልጥፎች ከሁለቱም በይነገጽ ጦማር ልጥፎች ከሁለቱም በይነገጽ ጦማር ልጥፎች ከሁለቱም በይነገጽ ጦማር ልጥፎች ከሁለቱም በይነገጽ ጦማር ልጥፎች ከሁለቱም በይነገጽ ጦማር ልጥፎች ከሁለቱም በይነገጽ ጦማር ልጥፎች ያቀርባል. የሞት መጨረሻዎች እና አስደሳች ተሞክሮዎች የፈጠራ ጥራት ቶን ይሰጣሉ. የፕሮግራምተሮች (እውነተኛም “እውነተኛ ጥራት”) ተመሳሳይነት ያውቃሉ. ይህም አንዳንድ መዳረሻዎች ተመሳሳይ የሞት መጨረሻዎች ውስጥ ተስማሚ ሊሆን ይችላል - አንተ የመጀመሪያውን ጊዜ የእርስዎን ማረጋገጫ ታሪክ ያውቃሉ ከሆነ. 8.5.4 Include numbers, benchmarks, metrics, and flame graphs በባንክ ማምረት ውጤቶች, ሜትሪክስ, እና ሁሉንም ዓይነት ቁጥር ከታች እና የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የኮምፒውተር የእርስዎን ግምገማዎች ከ screenshots (እርስዎን ግምገማዎች) (እርስዎን ግምገማዎች እንደ ግምገማዎች እንደ ተንቀሳቃሽ ፎቶዎች) ያግኙን, ጽሑፍ ይበልጥ ደንበኛ እና ይበልጥ ተስማሚ ሊሆን ይችላል. በእርግጥ 8.5.5 ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት ከሰዓት በአብዛኛው ጦማር ልጥፎች ላይ, እኛ የ TL;DR መጀመሪያ ላይ ይሰጣሉ, ስለዚህ መተግበሪያዎች ፈጣን መውሰድ ይችላሉ. እዚህ አይደለም! በ bug hunt ጦማር ልጥፎች ጋር, በእያንዳንዱ ዋጋ ላይ spoilers መውሰድ! የ አታሚ ሞዴል መውሰድ ድረስ ትክክለኛነት ለመፍጠር ይሆናል, እና ትክክለኛነት ይሰጣል. ይህ (እነርሱም ከባድ አይደለም, በእያንዳንዱ ጊዜ) መተግበሪያው አስደናቂነት ለማሳየት ይቻላል, ሁሉንም ጓደኝነት እና ጓደኝነት ጋር. እነርሱም በአብዛኛው ጽሑፍ ከባድ መጨረሻ ጋር መጨረሻ ይሆናል, ነገር ግን በአብዛኛው የኮምፒዩተር ታሪክ እንደ ይህ አይሆንም? 8.5.6 የኮምፒውተር ማረጋገጫ ለማግኘት ከባድ ሊሆን አይችልም That being said, some readers will get impatient. Maybe they drew their own conclusion after just a few paragraphs and want the immediate gratification of confirming that they got it right, right away, unlike silly old you. Maybe this is the twelfth Java bug hunting blog post they’ve come across this month and they want to see if this is yet another one where the garbage collector is ultimately to blame. Be kind and mark “the fix” with a nice prominent heading so they can skip ahead to the smoking gun. As a bonus, having a clearly labeled fix is also helpful to those who are returning to your blog post because they’re now suffering a similar problem. Back when they were reading this for fun, they enjoyed following along with the thrill of your hunt. But now that the tables have turned, they want to go straight to your fix and see if it will save them in their own moment of despair. 8.5.7 Add breaking points wherever necessary bug hunt articles can get long, especially if you are covering every little twist and turn (how you absolutely should!) If you end up writing a blog post that will take over 20 minutes or so to read, readers, if they choose to consume your article in more than one session. ለምሳሌ, እርስዎ ከሁሉም ጊዜ የሙዚቃ ልምድ አጠቃቀም አጠቃቀም አጠቃቀም ይችላሉ. እርስዎ ከሁሉም ደረጃዎች ከሁሉም ጊዜ የሙዚቃ ልምድ አጠቃቀም አጠቃቀም ይችላሉ. ወይም እርስዎ ከሁሉም ጊዜ የሙዚቃ ልምድ አጠቃቀም ይችላሉ. 8.5.8 Don't suck the life out of it Readers aren't here to read an official failure report. The captivating bits are the personal story, the struggle, and the final joy of figuring out what was wrong. The best bug hunting blog posts use an informal conversational tone, and anecdotes are very much welcome. እርስዎ የግል ፎቶዎን በመስመር ላይ ያውቃሉ. በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገጽዎን በይነገ ከላይ ዝርዝሮች ላይ የተመሠረተ "የተቋቋም ለመፍጠር" እና "እነዚህ መሳሪያዎች ላይ ሙሉ በሙሉ መዳረሻ ያቀርባል" መተግበሪያዎች የክብደት ለመጠበቅ ሁለት አስፈላጊ መንገድ ናቸው (ወይ, እነርሱ በእርግጥ, የእርስዎን ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ጓደኛ ነው. ይሆናል Write in an extremely casual tone, sacrificing “proper” grammar as needed to keep it conversational Create a faux dialog with the reader: ask them questions so they’re encouraged to step back and form their own hypotheses (which you will proceed to confirm or disprove) Write as if you’re in the thick of the hunt (e.g., “Let’s see if …” vs. “Then we checked if…’’) Share exactly what popped into your head (no matter how silly it seems in retrospect) as you encountered each new piece of information Explicitly call out critical moments like “plot twist,” “dead end,” and “the aha moment” to ensure readers are in the right mindset at every point 8.5.9 በጉዞ ላይ እርዳታ ለመስጠት የሚፈልጉትን ሰዎችን እርዳታ መውሰድ ያስፈልግም የኮምፒውተር ፕሮግራም ውስጥ በጣም አስደናቂ ክፍሎች መካከል አንዱ ነው, እና አስደናቂነት ኩባንያ ይወዳል. የኮምፒውተር ኩባንያዎች በጣም አስፈላጊ ነው. የኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒውተር ኮምፒ 8.5.10 አግኝቷል የ "Rust code had a bug" (እኛ የ Rust code had a bug) ከ የተወሰነ ፍለጋዎች (እኛ የ "Rust standard library makes it easy to deadlock in this particular use case" (እኛ የ "Rust code had a bug") ወደ በአጠቃላይ ጥያቄዎች (እኛ የ "Rust standard library makes it easy to deadlock in this particular use case" (እኛም የ "Rust code had a bug") ያተኮሩ ይችላሉ) የ "Bug hunting" ጦማር ልጥፎች በተጨማሪም በእርስዎን ልዩ ቴክኖሎጂ ጋር አያስፈልግዎት በሽታዎች ላይ አንዳንድ ብርሃን ለማሳየት ችሎታዎች ናቸው. የ Programming language and libraryers appreciate constructive criticism that helps improve their projects. 8.6 ጥቅል አንድ bug-hunting ጽሑፍ መጻፍ ያገለግላል, የእርስዎን ጥቅሞች ለማሳየት, እና የእርስዎን ውጤቶችን ለማሳየት. አንድ bug-hunting ጦማር ልጥፍ የቴክኒካዊ አጠቃቀም, ከ ባለሙያዎች ከ ታዋቂዎች, አብዛኛውን ጊዜ (ገደማ) የቴክኒካዊ አጠቃቀም አጠቃቀም ያካትታል. Bug hunting blog posts are typically heavy on investigative details, showcasing technical evidence in the form of numbers, benchmarks, results, and graphs Top tips: Check for transparency issues Do a technical deep dive Be brutally honest Include numbers and benchmarks Avoid spoilers Clearly mark “the fix” Make it personal Thank your collaborators አግኙን የእርስዎን ጽሑፍ ተጨማሪ ማየት ይችላሉ (የእውነቶች ይሰጣል) እና እባክዎን ያውቃል, ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ከባድ ነው. በ Manning ጣቢያ ላይ በ Bryan Cantrill afterword by Scott Hanselman (አንድ)