gdb vscode 不进入断点_VScode配置MASM32运行环境(断点/运行/debug/配合emu8086(非DOSBox))...
一、之所以不用DOSBox
不利于集成到VScode,执行代码需要新开窗口,配置繁琐。ps:而且加断点和调试复杂。
感谢masm-code插件的作者,终于可以补全啦qaq
添加关于调试的一些建议
二、步骤
0.网络状况不好可以用度盘资源:
//20200403 update
1.安装VScode
2.安装masm-code, code runner插件
3.从masm32 sdk ver11下载所需的masm,如果下载不了可以自行换镜像,或者百度下载。
3.1.解压,然后换路径,一路yes就可以了。
3.2.记下安装位置,比如我的在g盘根目录。
4.百度或谷歌搜索ms-dos player,下载这个软件,或者从链接的GitHub上面下载源码,编译安装。
4.1.解压里面的msdos到X:\Program Files (x86),X为想安装到的盘符。
4.2.记下安装位置。
5.添加环境变量:对于win10,win+R输入SystemPropertiesAdvanced>环境变量>系统变量>找到Path变量>打开>添加如下两个变量(根据安装masm和msdos的位置不同前面的路径要调整):
*note:如果不是64位系统就在binary文件夹下选择相应的文件夹
*note:可以测试,如果加入Path成功,在PowerShell里面输入msdos , ml /? 以及link16 /?会有出现相应的信息。如果没有可以尝试重启。
6.打开VScode, ctrl+shift+P打开搜索json,选择:
7.在末尾添加设置:
*经评论中 @影生 提出,将选项/AT去除然后将输出文件的扩展名改为.EXE,这样可以用伪指令格式书写程序。
"code-runner.executorMap": {
"javascript": "node",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"php": "php",
"python": "python -u",
"perl": "perl",
"perl6": "perl6",
"ruby": "ruby",
"go": "go run",
"lua": "lua",
"groovy": "groovy",
"powershell": "powershell -ExecutionPolicy ByPass -File",
"bat": "cmd /c",
"shellscript": "bash",
"fsharp": "fsi",
"csharp": "scriptcs",
"vbscript": "cscript //Nologo",
"typescript": "ts-node",
"coffeescript": "coffee",
"scala": "scala",
"swift": "swift",
"julia": "julia",
"crystal": "crystal",
"ocaml": "ocaml",
"r": "Rscript",
"applescript": "osascript",
"clojure": "lein exec",
"haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
"racket": "racket",
"scheme": "csi -script",
"ahk": "autohotkey",
"autoit": "autoit3",
"dart": "dart",
"pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
"d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
"haskell": "runhaskell",
"nim": "nim compile --verbosity:0 --hints:off --run",
"lisp": "sbcl --script",
"kit": "kitc --run",
"v": "v run",
"masm":"cls && cd $dir &&ml /nologo /Bl link16.exe /AT ./$fileName /link /NOLOGO *>null && msdos ./$fileNameWithoutExt.com"
},
"code-runner.clearPreviousOutput": true,
"code-runner.saveFileBeforeRun": true
三、helloworld测试
; *************************************************************************
; 16-bit MS-DOS COM Hello World Application
; COM File size: 26 Bytes
; Created by Visual MASM (http://www.visualmasm.com)
; For 16-bit DOS running restricts under Windows 2000/XP see below.
; For more information about DOS interrupts, see:
; http://spike.scu.edu.au/~barry/interrupts.html
; *************************************************************************
.model tiny; MASM's support for COM files
.dosseg; Make sure you are using dos segment CODE, DATA + STACK
; *************************************************************************
; Our data section. Here we declare our strings for our console message
; *************************************************************************
.data
strMessageDB "Hello world", 0Dh, 0Ah, '$'
; *************************************************************************
; Our executable assembly code starts here in the .code section
; *************************************************************************
.code
.startup
; **********************************
; Prepare our message to the console
; **********************************
movah, 09h; Write string to standard output
movdx, offset strMessage
int21h; Call DOS interrupt 21h
; ************************************************
; Get ready to exit and return control back to DOS
; ************************************************
movah, 4Ch ; Exit with return code (AL = return code)
int21h; Call DOS interrupt 21h
end
这里的.code 写法相当于 :
_TEXT SEGMENT WORD PUBLIC 'CODE'
详细如下:
输出:
一键运行。
//20200403 update
利用emu8086完成复杂的调试:
**先安装open插件**
在emu8086设置中设置(工具栏)默认打开(右下角)
在vsc里面编辑好文件后利用ctrl+alt+O用emu8086打开,然后进行各种调试
note:如果要链接额外的文件可以参考官方文档:ML and ML64 Command-Line Referencedocs.microsoft.com
MSVC Linker options:MSVC Linker optionsdocs.microsoft.com
*note:链接器的选项要写在/link选项
三、关于调试[patch] Connect a Gdb client to DOSBoxwww.vogons.org
最近又找到了一个调试汇编的方案,如果成功的话可以用vscode的native debug来调试:
路线1:编译安装djgpp版本的gdb -- 安装到dos里面 --利用里面的gdbserver连接虚拟机的COM端口 -- vsocde里面用native debug 连接,调试
路线2(最接近完成):利用上面dosbox-x 的patch --编译dosbox-x --连接gdbserver -- vscode 用native debug连接
路线3:利用wsl或者msys2安装或者编译qemu -- 利用gdbserver连接COM口 -- 连接vscode
但是现在的难点是找不到相应dosbox-x的版本,如果有找到的大佬麻烦留言呀!
后续应该会怎加一些汇编的例子和专门讲比较c和汇编的文章。(20201108)
gdb vscode 不进入断点_VScode配置MASM32运行环境(断点/运行/debug/配合emu8086(非DOSBox))...相关推荐
- VsCode配置Python开发环境后运行代码会报错“无法加载文件 D:\Code\xxx\poetry-demo\.venv\Scripts\Activate.ps1”
问题描述:在VsCode中配置Python开发环境后运行代码会报错"无法加载文件 D:\Code\xxx\poetry-demo\.venv\Scripts\Activate.ps1&quo ...
- vscode输入vue自动_vscode配置总结可收藏/vscode用户设置大全/vue代码模板,vscodevue...
vscode配置总结可收藏/vscode用户设置大全/vue代码模板,vscodevue //用户设置 { //-------- 搜索配置 -------- "search.excl ...
- 超详细Visual Studio Code配置PHP开发环境 / 如何运行HTML,PHP文件
文章目录 (一)VSCode如何新建一个HTML文件并在网页打开? (二)VSCode配置PHP开发环境 (一)VSCode如何新建一个HTML文件并在网页打开? 原文链接:vscode如何运行htm ...
- 【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )
文章目录 一.VirtualAppEx 简介 二.配置 VirtualAppEx 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配 ...
- 【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 )
文章目录 一.VirtualApp 简介 二.配置 VirtualApp 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配置远程仓 ...
- 怎么改变java安装环境,安卓如何修改大师配置Java运行环境?运行环境修改步骤一览...
安卓修改大师是一款专业免费对任何APK安装包进行反编译的软件,但是运行软件之前首先需要配置电脑上的Java运行环境,否则无法运行.下面来说一下如何配置Java环境. 安卓修改大师需要在JDK1.7以上 ...
- vscode的eslint无效_vscode配置eslint自动保存功能不生效
今天给一个项目添加eslint, 按照网上的教程,配置完就是不生效,半天没解决, 后来终于解决了, 在此总结,把一些坑分享出去. 1. vscode 扩展中安装eslint 2. eslint 扩展要 ...
- vscode 新版eslint自动修复_VSCODE 配置eslint规则和自动修复
全局安装eslint 打开终端,运行npm install eslint -g全局安装ESLint. vscode安装插件 vscode 扩展设置 依次点击 文件 > 首选项 > 设置 { ...
- vscode的eslint无效_VSCode配置eslint
在Vue.js项目中,使用的是eslint检查. 而在我写完代码后,cnpm run dev运行命令...然后悲剧了,一大堆报错!╮(╯▽╰)╭ 安装插件:Vetur:这是vscode上一个vue.j ...
最新文章
- keras 的 example 文件 addition_rnn.py 解析
- 小程序之获取用户信息取消授权处理
- 解决Teamviewer连接出现的黑屏问题
- IOS基础之毛毛虫案例-重力
- Python三维绘图--Matplotlib colorbar生成
- 接口测试(apipost、jmeter和python脚本)
- 一个有趣的IP不同的问题?
- 免费的html空间,免费HTML网页空间(每月200 GB 流量托管静态网页超简单)
- 【渝粤教育】国家开放大学2018年秋季 0299-22T中国古代文学(1) 参考试题
- 谷歌浏览器整个网页截图方法
- Python 批量更改文件名、更改文件格式
- 卡牌大师怎么玩_LOL高端局中的常客,卡牌大师上分攻略,最完美的节奏大师!...
- limbo模拟器安装linux,limbo模拟器win10镜像安装使用教程(附下载)
- 动态规划 计算二项式系数
- AutoCAD.NET实现CAD截图
- MySQL的学习笔记(超详细超完整)
- 从IMDB上爬取MovieLens数据集中的详细电影信息
- CSS-position: fixed固定定位
- 记一次COLA架构的实践
- 单片机中常用的串口通信协议帧
热门文章
- java 当前时间小时数,java获取当前时间前几个小时的时间
- php多图片上传封装类,php----图片上传封装类:单张,多张图片上传,生成缩略图...
- element table多选只能选中当前页数据_关于“列表多选”操作流的小思考
- python paramiko exec_command()和invoke_shell()
- linux oracle11g客户端安装
- 吐槽大会4_《吐槽大会4》不愧都是国家队,真吐槽!孙杨霸气喊话霍顿
- java 查看虚拟机状态_深入理解java虚拟机学习笔记(四)虚拟机性能监控与故障处理工具...
- ajax 隔x秒发送一次,如何使用XAJAX和PHP编写实时聊天?
- java pdf转为png_java-使用icepdf实现pdf转换成png
- 微信上传素材 java_java微信接口之四—上传素材