关于 MonoDevelop on Linux 单步调试问题的解决

在 MonoDevelop 中默认是关闭对外部程序集(.dll)的调试,可通过如下步骤来解决这个问题。

  1. 通过菜单【Edit】-【Preferences】-【Debugger】进入到调试器的设置页,把“Debug project code only; do not step into framework code.”选项取消。
  2. 如果你的应用是个控制台程序,还需要进入到该项目(鼠标右击该项目,在弹出菜单中选择“Options”)的【运行】设置页中,将“运行于外部控制台”的设置项取消掉。
  3. 但是,就算这样也无法单步调试进入到外部程序集,原因是还缺少Mono的调试符文件,即(*.dll.mdb)文件。所以还需要将所有待调试的外部程序集文件对应的.mdb文件拷贝到当前Host项目的“bin/Debug”目录中。 注意:如果外部程序集更新了代码,记得再同步拷贝一次对应的.mdb文件过来。
  4. 每次都手动复制还是很痛苦的,尤其是外部程序集较多的时候,所以创建一个复制脚本还是很有必要的。 在Host项目的目录中创建一个名为:deploy.sh 的脚本文件,使用命令:vi deploy.sh 然后在vi编辑器的第一行写入:#!/bin/bash,第二行开始编写拷贝命令。编辑完成后,记得使用命令:chmod 777 deploy.sh 去开启其可执行属性。
  5. 在 MonoDevelop 中进入Host项目的属性设置对话框,在里面的【构建】-【自定义命令】设置页中添加一个“After Build“命令项:deploy.sh

至此,就可以愉快的在 MonoDevelop 中对外部库进行单步调试了!

时间: 2024-11-08 04:21:50

关于 MonoDevelop on Linux 单步调试问题的解决的相关文章

Linux 生成可以调试的动态库(单步调试)

我们经常需要调试自己的动态库,但是不能跟踪到库的函数内部,按照下面的方法可以解决这个问题. 1.gcc -c -fPIC   src.c -g -rdynamic 2.gcc -shared -o libtest.so  src.o 这样其它工程在调用时库 libtest.so就可以在单步调试时,跟踪到库内部. 见下面例子: =======================生成动态库====================== =====================测试生成的库========

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

Linux内核调试技术——jprobe使用与实现

前一篇博文介绍了kprobes的原理与kprobe的使用与实现方式,本文介绍kprobes中的第二种探测技术jprobe,它基于kprobe实现,不能在函数的任意位置插入探测点,只能在函数的入口处探测,一般用于监测函数的入参值.本文首先通过一个简单的示例介绍jprobe的使用方式,然后通过源码详细分析jprobe的实现流程. 内核源码:Linux-4.1.x 实验环境:Fedora25(x86_64).树莓派1b 1.jprobe使用实例 使用jprobe探测函数的入参值,需要编写内核模块.同k

第10章 嵌入式Linux的调试技术 学习心得

第10章嵌入式Linux的调试技术 心得体会 这一章主要概括的介绍了嵌入式Linux的调试技术的主要内容.通过对第10章的学习,使我对嵌入式Linux的调试技术的方法以及操作步骤有了一个基本的认识. 一 调试前的准备 在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug. 包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助.可以采用二分查找法来逐步锁定bug引入版本号. 对内核代码理解越深刻越好,同时还需要一点点运气. 该bug可以复

VC++6.0 Debug单步调试

相信大家对谭浩强童鞋都不陌生,想当年,是他 引领我们步入了C的殿堂,我们从他那里学会了如何写代码,他却没有教我们如何Debug,而我们伟大的老师,也对此只字不提.相信很少有人可以一次性写出 完全正确的代码.对于我们这些个菜鸟来说,写出不带bug的代码倒是一件很不正常的事情.也许你知道有Debug这么个东西,但却不知道该怎样用:也许你 还停留在在代码中添加N个printf来输出查看到底是哪里出了问题:也许……总之,经验表明,你花费时间看完这篇文章并学会简单的使用Debug,绝对 不是浪费时间! 废

linux内核调试指南

linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&

Linux GDB调试全面解析

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式. 当程序被停住时,可以检查此时程序中所发生的事,并追索上文. 动态地改变程序的执行环境. 不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须.而且,调试内核和调试应用程序时使用的gdb命令是完全相同的,下面以代码清单22.2的应用程

第10章 嵌入式linux的调试技术

一.      防止函数printk降低linux性能: 利用C语言中的编译指令(#if.#else.#endif等). 现在修改printk_demo驱动代码,通过编译指令定义了一个pr_debug宏,并通过修改编译指令的条件值来控制是否调用printk函数.如下: # if 1//此处为1,使用printk函数,为0,忽略printk函数 #define pr_debug(x,…)  do { } while(0) #endif 除此之外,我们还需要了解两个知识点:1.可变参数的宏:可变参数

一起talk GDB吧(第二回:GDB单步调试)

各位看官们,大家好,我们在上一回中说简单地介绍了GDB.这一回中,我们介绍GDB的调试功能:单步 调试.闲话休提,言归正转.让我们一起talk GDB吧! 看官们,我们先说一下什么是单步调试.大家都知道,程序是按照指令,一步一步地执行,只是程序运行 的很快,所以你没有办法看到走过的每一步.这个有点类似我们平常走路,一步一步地向前走,在路上可 以看到许多风景,如果坐车,那么车速太快了,就会看不清楚路上的风景.单步调试就是不让程序很快地 执行,通俗点说,说是不让程序"坐车"走,让程序一步一