<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vscode &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/tag/vscode/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.somedoc.net</link>
	<description>看前面，黑洞洞</description>
	<lastBuildDate>Mon, 18 May 2020 10:14:28 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.somedoc.net/wp-content/uploads/2016/12/cropped-dandycheung-1-32x32.jpg</url>
	<title>vscode &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>vscode 调试 go 项目的一些细节</title>
		<link>https://www.somedoc.net/2020/05/18/vscode-%e8%b0%83%e8%af%95-go-%e9%a1%b9%e7%9b%ae%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/</link>
					<comments>https://www.somedoc.net/2020/05/18/vscode-%e8%b0%83%e8%af%95-go-%e9%a1%b9%e7%9b%ae%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Mon, 18 May 2020 10:14:28 +0000</pubDate>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[备忘录]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[vscode]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=4494</guid>

					<description><![CDATA[vscode 的调试，最开始的时候，要手写 launch.j <a href="https://www.somedoc.net/2020/05/18/vscode-%e8%b0%83%e8%af%95-go-%e9%a1%b9%e7%9b%ae%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>vscode 的调试，最开始的时候，要手写 launch.json，当时嫌麻烦，没学习。搁了一阵子，发现变容易了，不管是 golang 还是 Python，找那个长得像播放键的按钮点就好了，通常会直接针对当前编辑区内的文件开始调试。</p>
<p>上周的时候，远程调试一个 golang 的项目，因为要传入一些参数的原因，被逼着要用 launch.json 了，好在集成环境已经进化到可以自动生成一个模板了，大概长这样。</p><pre class="crayon-plain-tag">{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": []
        }
    ]
}</pre><p> </p>
<p>环境的智能化是有几个坑的。对于 go 的项目，尽管都是 <code>launch</code> 请求，然鹅，当你对 <code>program</code> 指定不一样的内容时，其实质是不同的，但在开着 main.go（或者等价的主源文件）进行调试时尤其容易产生作用相同的错觉。</p>
<p>如果 <code>program</code> 里指定为 <code>${fileDirname}</code>，那就是调试当前打开的源文件，而如果指定为 <code>${workspaceFolder}</code> 的话，那就是调试当前的项目。vscode 会把要调试的可执行文件自动编译为 <code>__debug_bin</code> 的文件名，截至本文，老夫尚且不知如何才能指定一个自己想要的文件名，而且，如果写一个不允许改变可执行文件名、在执行时会进行检查的程序的话，那调试还得想辙儿。</p>
<p>还有一个坑是偷懒时踏进去的，在 <code>args</code> 里。当将其指定为 <code>["-c /svc/sdaemon/sd.conf"]</code> 后，发现程序执行的行为不正常，能够感知到要指定配置文件，但却找不到配置文件。调试后得知，在寻找配置文件的时候，代码会试图打开 <code> /svc/sdaemon/sd.conf</code> 而不是 <code>/svc/sdaemon/sd.conf</code>（注意前面多了一个空格）。原本简直就要上手修改命令行解析器的我，在斥责其实现竟然如此幼稚脆弱的惊愕之余，幸而想到把 <code>args</code> 参数改为 <code>["-c", "/svc/sdaemon/sd.conf"]</code> 一试，果然河清海晏。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2020/05/18/vscode-%e8%b0%83%e8%af%95-go-%e9%a1%b9%e7%9b%ae%e7%9a%84%e4%b8%80%e4%ba%9b%e7%bb%86%e8%8a%82/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
