mono调试篇

Unity+Mono断点调试步骤 Unity3D是一个基于Mono的跨平台游戏引擎,支持 PC 、MAC 、Android 、IOS 等多种平台,其 3.0 以后的版本支持用MonoDevelop调试,很多人安装了之后发现 MonoDevelop 的调试按钮是灰色的,无法进行调试,通过看官方文档和测试,发现正确的调试步骤如下: 1.MonoDevelop 的安装与设置: (1).下载并安装 Unity3D 以及其内置的 阅读详情
Mono Debugger support for MonoDevelop.

The Mono Soft Debugger is a new debugging framework for Mono. Unlike regular 
debuggers which act as all-knowing and controlling programs that control a 
separate process, the Mono Soft Debugger is actually a cooperative debugger 
that is built into the Mono runtime.

Applications communicate with the Mono runtime and request debugging 
operations to be performed on the target process.

The Mono Soft Debugger first became available with Mono 2.6 and is primarily 
used today with Mono on the iPhone (http://monotouch.net) and is used from 
the MonoDevelop IDE (http://monodevelop.com). 

This requires monodevelop and mono-debugger.

Debug Remote Mono Apps with Xamarin Studio

NOV 11, 2015

The Mono Project is great. It lets you run your .NET apps on other platforms, including Linux! There are a number of benefits to this:

  1. You can run your .NET Mono apps in Docker to minimize deployment issues.
  2. You can run your .NET Mono apps on a t2.micro Linux instance, whereas, if you were to run them on a Windows Server instance with the same specs, you'd hardly be able to start up the instance, let alone run your app (because Windows needs a lot more compute power and RAM to run its OS). This also saves you some big bucks if you need to run your app on multiple servers, as Linux instances cost less than Windows instances.
  3. You can run your .NET Mono apps scalably using Amazon Elastic Beanstalk or Amazon EC2 Container Service without setting up a deployment mechanism or taking care of scalability on your own.

However, as one soon discovers, .NET apps behave differently on Mono. You'll experience some unexpected behavior, weird implementations (such as partial TLS/HTTPS support), and bizarre exceptions that wouldn't occur on Microsoft .NET.

Debugging these can be a real hassle, since you are probably running your app on a weak Linux server, off in some remote datacenter. Luckily, the Mono Project provides a way for us to connect to our process remotely and debug it with Xamarin Studio!

Download Xamarin Studio

The first step is to download Xamarin Studio (MonoDevelop). If you download Xamarin Studio from the official Xamarin website, you'll have to install some other stuff as well (such as the Android SDK in case you don't have it already), so you should grab it from the MonoDevelop site instead.

Set a Mono Environment Variable

To be able to debug remote Mono apps, we need to set an environment variable named MONODEVELOP_SDB_TEST to 1. On Windows, you should set the variable in My Computer -> Properties -> Advanced System Settings -> Environment Variables.

Xamarin Studio checks this environment variable (when launched) and displays a new option in "Run -> Run With" called Custom Command Mono Soft Debugger.

Mono Soft Debugger

Generate Debugging Symbols for Your App

To debug Mono apps, you need to generate an .mdb file, which is Mono's variation of the .pdb file.

The .pdb file provides debug symbols for the executable and is generated automatically when you build your solution in Debug mode via Visual Studio. It contains metadata about your executable that links each function and variable to its exact line in your source code.

If you have the .pdb file from Visual Studio, you can convert it to an .mdb file with pdb2mdb as follows:

C:\Code\MyProject\packages\Mono.pdb2mdb.0.1.0.20130128\tools\pdb2mdb.exe C:\Code\MyProject\MyProject\bin\Debug\MyProject.exe

Alternatively, you can build your entire solution on Linux using xbuild, and your .mdb file will be generated automatically.

Run Your Mono App in Debug Mode

After generating the .mdb, you need to copy both your .exe and .mdb to the target server running Mono.

The next step is to run Mono as you normally would, but with some additional parameters, namely --debug and --debugger-agent:

mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y /path/to/Executable.exe

This will create a listener on port 12345 on your server for an incoming debugger connection from Xamarin Studio, as well as read from the .mdb file to interpret the app's debug symbols.

If you're running your server behind some firewall, make sure to open port 12345 (if you're running on EC2, make sure to add it to the EC2 server's security group).

Connect to the Debugger Agent

Now, all you need to do is open your solution in Xamarin Studio (it can open Visual Studio solutions), click Run -> Run With -> Custom Command Mono Soft Debugger.

Then, simply enter the IP and Port of your Mono deployment, click Connect, and debug away!

Launch

Can't connect? Make sure that you can reach the debugger agent:

telnet 1.2.3.4 12345

Replace 1.2.3.4 with your public server IP address.

Debug Away

You'll notice that your Mono app starts running only after the debugger has attached to it.

Feel free to set breakpoints, watch variables, step in, step out, etc. Almost all of Visual Studio's great debugging features are at your disposal (except edit-and-continue and dragging the current execution point).

Debug Preview

Enjoy, and let me know if this helped you debug your Mono deployments!


Unity深度调试:从源码编译可调试mono.dll的完整实践指南 在软件开发中,调试是定位和修复问题的核心环节,而符号文件(如PDB)是实现源码级调试的关键。对于Unity开发者而言,官方发布的mono.dll默认不包含调试符号,限制了在复杂场景下的深度问题排查能力。通过从Unity官方提供的Mono源码进行编译,开发者可以生成附带完整调试信息的定制版本,从而实现对托管代码和运行时内部机制的透明观测。这一技术方案不仅解决了发布版本中诡异Bug的追踪难题,还为性能优化、内存分析及第三方库集成问题提供了底层支持。本文将以Unity引擎为例,详细阐述如何通过环境配置、源码修改和 阅读详情

相关推荐

「从零开始手写VIO」第七讲学习笔记

「从零开始手写VIO」第一章学习笔记 Vins Course 基于 VINS-Mono 框架不依赖ROS Ceres G2o 代码仅基于 Eigen 的后端 LM 算法,滑动窗口算法,鲁棒核函数等 SLAM 优化中常见的算法 运行 1. CurveFitting Example to Verify Our Solver. 2. VINs-Mono on Euroc Dataset 想在本机运行需要作如下更改CMakeLists.txt 添加调试信息 添加本机EIgen环境 run_euroc.cp

小秋 AI SLAM 入门实战教程 1217

推荐开源项目:VS Code Mono Debug —— 轻松调试Mono应用的利器!

推荐开源项目:VS Code Mono Debug —— 轻松调试Mono应用的利器! 去发现同类优质开源项目:https://gitcode.com/ 1、项目介绍 VS Code Mono Debug 是一个专为Visual Studio Code设计的扩展,用于调试基于Mono虚拟机的应用程序。它受到小巧强大的命令行调试器SDB的启发,旨在提供无缝且直观的调试体验。通过这个插件,你可以直接在...

gitblog_00017的博客 823

vscode-mono-debug:一个简单的VS Code调试适配器,用于单声道

VS Code Mono调试 Mono VM的简单VS Code调试器扩展。 它的实现受到命令行调试器的启发。 安装单声道 您可以从下载适用于Linux,macOS或Windows的最新Mono版本,也可以使用软件包管理器。 在OS X上: brew install mono 在Ubuntu,Debian,Raspbian上: sudo apt-get install mono-complete 在CentOS上: yum install mono-complete 在Fedora上: dnf install mono-complete 启用Mono调试 要启用基于Mono的C#(和F#)程序的调试,必须将-debug选项传递给编译器: csc -debug Program.cs 如果要将VS Code调试器附加到Mono程序,请将这些其他参数传递给Mono运行时: mono

vscode-mono-debug:简单易用的Mono VM调试器扩展

vscode-mono-debug:简单易用的Mono VM调试器扩展 项目介绍 vscode-mono-debug 是一款针对 Visual Studio Code 编辑器的调试扩展,专门为 Mono 虚拟机设计。该扩展的实现对 SDB 命令行调试器进行了借鉴,提供了简单而高效的调试功能,适用于 C# 和 F# 等基于 Mono 的程序开发。 项目技术分析 vscode-mono-debug 的...

gitblog_00027的博客 547

mono教程

我从网上找到的一个mono教程,拿来跟大家分享一下

vscode-mono-debug, 一个简单的用于mono的vs.zip

vscode-mono-debug, 一个简单的用于mono的vs vs-代码单声道调试一个简单的vs 虚拟机代码调试器。 它的实现受 SDB的调试器启发。 安装单你可以在 Mono项目下载最新版本的Linux 。macOS 或者 Windows,或者你可以使用你的软件包管理器。OS X:

mono中显示debug信息(filename/lineno)

一直发现 mono 的 traceback 没有 fliename、lineno,很奇怪。研究了下,原来编译和运行时要加参数的。 dmcs -debug /r:xunit.dll /t:library MyTest.cs mono --debug xunit.console.exe MyTest.dll   MyTest.FooTest [FAIL]    Assert.Equal(...

weixin_34005042的博客 442

保姆级教程:用HFSS 2023 R2搞定GPS右旋圆极化微带天线(从建模到优化全流程)

本文提供了一份详细的HFSS 2023 R2教程,指导读者从零开始设计GPS右旋圆极化微带天线。涵盖建模、仿真和优化全流程,特别关注圆极化特性的实现与优化,帮助工程师快速掌握天线设计的关键技术。

weixin_42557830的博客 169

Unity使用MonoDevelop快速调试

目标: 下面这篇教程详细介绍了如何挖掘MonoDevelop的强大调试功能: 如何在不重新编译工程的情况下调试 如何查看调用堆栈 如何跟踪变量值的变化 使用MonoDevelop调试 首先最重要的是你不再需要为了调试而编译你的工程。很多人包括我在内,都不知道这个特性而花费很多时间在MonoDevelop里编译,然后在Unity的编辑器里调试,而你再也不需要这么做了。

Shepherdog的专栏 2759

实战指南 | 利用TSMaster的C小程序实时监控DBC报文发送周期

本文提供了一份利用TSMaster的C小程序实时监控DBC报文发送周期的实战指南。通过创建用户变量、编写C小程序核心逻辑并关联图形模块,工程师可以直观地可视化关键报文(如ID 0x64)的发送间隔,从而快速发现周期异常,提升汽车电子开发和测试中总线问题定位的效率与实时性。

weixin_29178069的博客 417

win11下的MySQL安装

目前官方最新版本是8.0.26,考虑到其稳定性、可靠性还需一定周期保证,所以使用官方版求稳定仍然建议5.7系列。3、选择MySQL Servers 5.7.38 -x64,然后按绿色箭头将选中的版本移植到右边选中框中。4、点击下方蓝色Advanced Options,选择安装位置。1、在开始界面搜索MySQL,点击command line。4、在“系统变量”中选择“path”,点击编辑。5、新建——>增加MySQL路径——>确定,12、execute,安装好后next。9、不需要做修改,直接点击next。.

rensweet的博客 2万+

Mono入门教程(二)--------------Mono的Windows调试环境搭建

前言本教程针对已经搭建好了Mono开发环境,并且已经在C++环境下运行mono的开发者准备。解决开发者联合调试C#业务逻辑代码的需求。环境搭建系统环境:Windows7 Mono版本:4.4 依赖编辑器:Xamarin Studio 如果已经折腾好了可以跳过本步骤。截至2017-2-7日,Xamarin Studio最新版本为6.1.2.44,教程中也是使用本版本进行调试开发的。依次下载安装以下

CoolServer 1万+

Arduino--土壤湿度传感器使用(电阻式)

最近买了一个土壤湿度检测传感器,实物图是这样的: 我买这个模块是想要得到土壤湿度的模拟量。但我买的时候忘了买左边的蓝色模块,我开始以为这个模块是有运放功能的,但实际它是一个电压比较器和一个分压电路。 其模块的接线如图: 该模块的四线是带模拟量输出的,三线的只输出一个到达阈值的标志量。该模块的原理图如下: 该模块的测试原理为:把土壤当成一个可变电阻,随着土壤含水量的增加,土壤电阻减小。而该传感器其实就是两个电极,用来接土壤这个可变电阻。一般湿度的土壤电阻大概在几百K左右,其串连的分压电阻应该在这个数量级。

weixin_41866783的博客 1万+

Mono.Cecil ReaderParameters

最近有需求 要写工具检查 代码方法中有没有存在一些类型或者委托 随便记录下 因为需要检查Method Body 普通反射已经无法满足,使用了Mono.Cecil这个库,感觉非常强大 Mono.Cecil 通过设置 ReaderParameters ReadSymbols 可以读取pdb文件 常见的应用有 获取方法所在文件位置 var readerParameters = new ReaderParameters { ReadSymbols = true };//ReadSymbol...

树莓吃的累 630

ABAP代码检查(Code Review)

1、SLIN 扩展程序检查 也可通过(SE38工具栏->检查-扩展程序检查) 进入 2、ATC 检查 通过<SE38菜单栏-检查-ABAP测试主控室> 或事物代码SCI, 支持自定义检查变式 SCI可以配置检查变式满足特殊需求,配置对象集用于批量检查 3、通过ABAP测试主控室实现统一管理,定期检查作业和监控功能(事务代码ATC) 参考 SLIN...

u012232542的博客 6063

LeRobot 入门教程(二)强化学习训练及 SmolVLA 模型微调

本文介绍了LeRobot框架中基于人类在环的样本高效强化学习(HIL-SERL)工作流,包含真实机器人训练和模拟环境训练两大模块。在真实机器人部分,详细说明了从配置设置、工作空间边界确定、演示数据收集、奖励分类器训练到演员-学习者架构部署的全流程,并强调了人类干预的关键作用。同时介绍了适用于模拟训练的gym_hil环境及其配置使用方法。最后,文章提供了微调SmolVLA基础模型的指南,包括数据集收集、微调步骤和模型评估方法。该工作流实现了人机协作的高效强化学习,适用于各类机器人操作任务。

2506_90492529的博客 3896

2021-09-16

开源框架调试错误记录(先开坑,抽时间更)VINS-Mono数据集调试 VINS-Mono数据集调试 配置的文章比较多,就不再详细说明。放置了很久的代码没有用,等用的时候又调不通了,做个记录。 本次调试数据集的时候,没有路径和算法解算的运行和显示,查阅相关问题,重新eigen和cere库仍然不能奏效。 后面才发现是之前调试D435的时候,一直都用的是: roslaunch vins_estimator realsense_color.launch 看到网上也有类似的问题,改topic没有效果,用: ros

m0_51495658的博客 193

CARLA仿真:自定义地图与AI车辆行为编程

CARLA仿真:自定义地图与AI车辆行为编程 ,人工智能,计算机视觉,大模型,AI,本文围绕CARLA仿真平台,介绍了其基础功能与安装方法,详解地图系统,包括预设地图的加载切换及自定义地图的创建、导入与优化。还阐述了AI车辆的创建、属性设置、销毁,以及行为控制,如交通规则遵守、路径规划、复杂行为编程和行为树应用。同时涉及传感器与车辆感知、交通场景构建、自定义地图与AI行为结合应用、高级应用,以及常见问题解决方案和学习资源,为CARLA仿真应用提供全面指导。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 11万+

VS Code 调试 VINS-Mono 环境配置

参考: 1.利用vscode调试VINS-FUSION 2.如何配置VSCode来调试ROS节点 3.http://wiki.ros.org/rosbash#rosrun 4.VINS-MONO 首先需要参照参考博客1进行配置(主要在tasks.json和launch.json两个配置文件中有所区别,其他步骤基本一致)。 以vins-mono 跑euroc数据集为例,常规的启动方式是打开三个终端,分别启动vins_estimator、rviz,并播放rosbag文件。以MH_01为例: roslau

Barry_123的博客 1973

浏览器解析HTML的过程及编程实现

需要注意的是,上述示例代码只是简化的演示,并未涵盖浏览器解析HTML的所有细节和复杂性。实际上,浏览器的HTML解析引擎还会处理一系列的特殊情况、错误容错和性能优化等方面的内容,以确保能够正确解析各种类型的HTML代码。HTML(超文本标记语言)是构建网页的基础语言,浏览器负责将HTML代码解析并渲染成可视化的网页。本文将详细介绍浏览器解析HTML的过程,并提供相应的编程示例代码。希望以上内容能帮助您理解浏览器解析HTML的过程,并通过提供的示例代码更好地了解如何在编程中实现这一过程。

ByteJolt的博客 321

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jit调试怎么解决_Unity mono代码结构分析及阅读(三)——mono调试环境搭建

这是基于unity mono代码阅读的第三篇。 本文主要介绍怎样将mono内嵌到我们的C++控制台程序中。 上文已经介绍了怎样在windows环境下编译一个debug的mono.dll和创建一个空的工程用来调试我们刚刚编译出来的mono,工程的配置部分部分请参考上一篇文章。 接着上一节,我们已经构建好了一个工程,接下来我们按照mono官方指引加入代码htt...

weixin_39626211的博客 888

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

如何在5分钟内上手UnityExplorer:IL2CPP与Mono游戏调试神器

UnityExplorer是一款专为IL2CPP和Mono Unity游戏打造的调试神器,它提供了直观的游戏内界面,帮助开发者和玩家轻松探索、调试和修改游戏内容。无论是查看游戏对象层次结构、修改组件属性,还是执行自定义脚本,UnityExplorer都能让你在5分钟内快速上手,大幅提升游戏调试效率。 ## 🚀 核心功能概览 UnityExplorer的界面设计简洁而强大,主要包含以下关键功能

gitblog_00235的博客 990

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SDB:Mono软调试器客户端 - 强大的跨平台调试工具

SDB:Mono软调试器客户端 - 强大的跨平台调试工具 项目介绍 SDB(Mono Soft Debugger Client)是一款基于命令行的调试工具,专为Mono虚拟机的软调试器设计。它旨在提供类似于GDB和LLDB的命令语法,使得开发者在使用过程中能够快速上手。SDB不仅支持跨平台使用,还具备强大的调试功能,能够帮助开发者快速定位和解决代码中的问题。 项目技术分析 SDB的构建和使用需要一...

gitblog_00556的博客 757

VINS-Mono-Learning代码调试技巧:使用GDB和ROS工具进行系统调试

VINS-Mono-Learning是一个专注于VINS-Mono代码注释与学习的开源项目,为开发者提供了深入理解视觉惯性导航系统的宝贵资源。在学习和开发过程中,调试是解决问题和提升系统性能的关键环节。本文将分享如何结合GDB调试器和ROS工具链,高效定位和解决VINS-Mono-Learning项目中的常见问题。 ## 一、编译配置:开启调试模式的关键步骤 要进行有效的代码调试,首先需要确保

gitblog_00813的博客 1119

调试Mono源码分析Hello World的执行

本文目的很简单,简单分析一下下面语句是如何被Mono Runtime执行的: public class Hello1 { public static void Main() { System.Console.WriteLine("Hello, World!"); } } 由于自己也是刚接触Mono源码,以前一直停留于简单的应用之上...

aizi6896的博客 556

【逆向工程】生成能够用dnSpy调试的mono-2.0-bdwgc.dll(二)

生成能够用dnSpy调试的mono-2.0-bdwgc.dll

Ricardo0012的博客 3659
上一篇: 编译mono-debugger-2.4出错
下一篇: Compiling Mono 3.8.0 on Windows
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值