"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > वीएस कोड के साथ गोलांग को डीबग करने के लिए डेल्वे और एयर की स्थापना

वीएस कोड के साथ गोलांग को डीबग करने के लिए डेल्वे और एयर की स्थापना

2024-08-19 को प्रकाशित
ब्राउज़ करें:470

Setting up Delve and Air to debug Golang with VS Code

वीएस कोड एक्सटेंशन

वीएस कोड एक्सटेंशन में गो खोजें और इसे इंस्टॉल करें।

  • https://marketplace.visualstudio.com/items?itemName=golang.Go

डीबगर

वीएस कोड में डिबगिंग (ब्रेकप्वाइंट, स्टेप थ्रू, आदि) प्राप्त करने के लिए आपको डेल्वे इंस्टॉल करना होगा।

go install github.com/go-delve/delve/cmd/dlv@latest

यदि आपने गो इंस्टॉल करने के लिए एएसडीएफ का उपयोग किया है, तो डेल्वे यहां स्थित होगा:

~/.asdf/shims/dlv

हो सकता है कि आप गो पैकेज स्थापित करने के बाद एएसडीएफ रेशिम चलाना चाहें।

लाइव रीलोडिंग

चूंकि GoLang एक संकलित भाषा है, इसलिए कोड को एक निष्पादन योग्य में संकलित किया जाएगा। विकास के दौरान, बदलाव करने के लिए हमें लगातार पुन: संकलन की आवश्यकता होगी, जो एक मैन्युअल प्रक्रिया हो सकती है, खासकर वीएस कोड में।

हम अपने लिए लाइव रीलोडिंग करने के लिए https://github.com/air-vers/air का उपयोग करेंगे।

यह एक कमांड लाइन टूल है जिसे परिवर्तनों को देखने के लिए आपके प्रोजेक्ट फ़ोल्डर में केवल एक बार चलाने की आवश्यकता है।

इंस्टालेशन

पैकेज स्थापित करें। यह मानते हुए कि आप v1.22 या उच्चतर पर जा चुके हैं।

go install github.com/air-verse/air@latest

यदि आपने गो को स्थापित करने के लिए एएसडीएफ का उपयोग किया है, तो वायु इसमें स्थित होगी:

~/.asdf/shims/air

अपने प्रोजेक्ट रूट में एक Air.toml कॉन्फ़िग फ़ाइल प्रारंभ करें

cd ~/myproject
air init

air.toml को संपादित करें [[बिल्ड करें]] कमांड को:
- सभी: बिल्ड पैकेजों में सभी पैकेजों पर झंडे लगाए जाने चाहिए
- -एन: आसान डिबगिंग के लिए स्रोत कोड के करीब उत्पन्न कोड को सुनिश्चित करने के लिए अक्षम अनुकूलन
- -एल: इनलाइनिंग ऑप्टिमाइज़ेशन को अक्षम करता है जहां फ़ंक्शन कॉल के ओवरहेड को कम करने के लिए छोटे फ़ंक्शन का विस्तार किया जाता है, जिससे डिबगिंग आसान हो जाती है
- डेल्वे संदर्भ से तर्क

- cmd = "go build -o ./tmp/main ."
  cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'

[!जानकारी]
एयर डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ चलेगा यदि:

  • Air.toml फ़ाइल अमान्य है
  • कमांड एयर चलाकर इसे अपने प्रोजेक्ट फ़ोल्डर में चलाएं

यह आपकी Air.toml फ़ाइल का उपयोग नहीं करेगा।

निर्मित बाइनरी को [[डेल्वे]] के साथ चलाने के लिए एयर.टॉएमएल फुल_बिन संपादित करें।

- full_bin = ""
  full_bin = "dlv exec ./tmp/main --listen=127.0.0.1:2345 --headless=true --api-version=2 --accept-multiclient --continue --log --"

यह डेल्वे को पोर्ट 2345 पर चलाएगा।

अपने प्रोजेक्ट फ़ोल्डर में एयर चलाएँ। आपको निम्नलिखित आउटपुट देखना चाहिए।

> cd ~/my-project
> air
  __    _   ___  
 / /\  | | | |_) 
/_/--\ |_| |_| \_ v1.52.3, built with Go go1.22.5

mkdir ~/my-project/tmp
watching .
!exclude tmp
building...
running...
API server listening at: 127.0.0.1:2345
2024-07-28T18:47:07 07:00 info layer=debugger launching process with args: [./tmp/main]
2024-07-28T18:47:09 07:00 debug layer=debugger entryPoint 0x1006e8000 machoOff 0x100000000
2024-07-28T18:47:09 07:00 warning layer=debugger debug_frame workaround not applied: function internal/abi.(*RegArgs).IntRegArgAddr (at 0x1006e9070) covered by 0x1006e9070-0x1006e9110
2024-07-28T18:47:09 07:00 debug layer=debugger Adding target 11503 "/Users/alaay/projects/scheduleasy/tmp/main"
2024-07-28T18:47:09 07:00 debug layer=debugger continuing
2024-07-28T18:47:09 07:00 debug layer=debugger ContinueOnce
2024/07/28 18:47:09 Starting server on :5602

डेल्वे के लिए वीएस कोड संलग्न करना

अपनी .vscode/launch.config फ़ाइल में, निम्नलिखित जोड़ें:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Air",
      "type": "go",
      "request": "attach",
      "mode": "remote",
      "port": 2345,
      "host": "127.0.0.1"
    }
  ]
}

वीएस कोड रन और डिबग (सीएमडी शिफ्ट डी) में, अटैच टू एयर के साथ डिबगिंग शुरू करें

[!जानकारी] वीएस कोड कनेक्ट करने में असमर्थ
यदि वीएस कोड कनेक्ट करने में असमर्थ है, तो यह सबसे अधिक संभावना है कि डेल्वे पोर्ट 2345 पर नहीं चल रहा है। यह जांचने के लिए कि क्या डीएलवी उस पोर्ट का उपयोग करके चल रहा है, lsof -i :2345 का उपयोग करने का प्रयास करें। यदि यह चल रहा है, तो आपको यह देखना चाहिए:

$ lsof -i :2345
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
dlv     15464 username    3u  IPv4 0x201bff14586139e3      0t0  TCP localhost:dbm (LISTEN)

पकड़ लिया

गो एक संकलित भाषा है। इसका मतलब है कि कोड को बाइनरी में संकलित किया जाता है और फिर निष्पादित किया जाता है। जब भी हम vscode में कोड में परिवर्तन करते हैं:

  • हवा बदलावों पर नजर रखेगी
  • बाइनरी का पुनर्निर्माण करें
  • 2345 पर डेल्वे शुरू करें

इसका मतलब है कि vscode डिस्कनेक्ट हो जाएगा और आपको गहराई तक जाने के लिए vscode को दोबारा जोड़ना होगा।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/nerdherd/setting-up-golang-on-vs-code-with-debugging-1kbe?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3