程序调试

说说XcodeLLDB调试的那些事儿

非 Y 不嫁゛ 提交于 2020-03-27 06:29:28
使用场景之一,接收他人的项目,快速理清其层次结构,可以打标识符断点,如下图 每一个VC,都加了个在viewDidLoad方法处的断点,这样运行程序时,逐步断点,便可以理清层次, 但是,需要手动不断的继续,依旧不是很好 如果使用LLDB,就事半功倍~ 先上效果图 LIDB简史 Xcode5之前的调试器使用的是GDB,如果你不幸使用,那感觉简直了~然后伴随着Xcode5的发布,LLDB调试器取而代之,成为Xcode工程中默认的调试器,它和LVVM编译器一起,带给开发者丰富的流程控制和数据检测的调试功能.LLDB为Xcode提供了底层调试环境,其中,包括内嵌在Xcode IDE中的调试区域的控制面板,在这里我们可以直接调用LLDB命令. chisel facebook团队良心出品的LLDB扩展 chisel 安装(需已有Homebrew,其安装很易,如若困惑可私信,这里不展开说明) brew update brew install chisel 安装结束后会打印出路径如 /usr/local/opt/chisel/libexec/fblldb.py 添加下述命令行到 ~/.lldbinit file vi ~/.lldbinit ... command script import /path/to/fblldb.py _ 注意: _要将将上述 /path/to/fblldb.py

Chisel-LLDB命令插件,让调试更Easy

天涯浪子 提交于 2020-03-26 08:13:37
http://blog.cnbluebox.com/blog/2015/03/05/chisel/ LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。( 这里 有一个关于调试器如何工作的总体的解释。) 相信每个人或多或少都在用LLDB来调试,比如 po 一个对象。LLDB的是非常强大的,且有内建的,完整的 Python 支持。今天我们主要介绍一个 facebook 开源的 lldb 插件 Chisel。可以让你的调试更Easy. 1.安装Chisel 源码地址: Chisel Chisel 使用 homebrew 来安装,如果你没有安装homebrew, 参考 homebrew 。 1 2 brew update brew install chisel 安装完成按照安装日志上的提示,在 ~/.lldbinit 文件中添加一行,没有则新建。 提示类似如下: 1 2 3 ==> Caveats Add the following line to ~/.lldbinit to load chisel when Xcode launches: command script

Chisel_LLDB调试命令

拟墨画扇 提交于 2020-03-26 06:41:36
Chisel-LLDB命令插件,让调试更Easy LLDB 是一个有着 REPL 的特性和 C++ ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作程序的进展。( 这里 有一个关于调试器如何工作的总体的解释。) 相信每个人或多或少都在用LLDB来调试,比如 po 一个对象。LLDB的是非常强大的,且有内建的,完整的 Python 支持。今天我们主要介绍一个 facebook 开源的 lldb 插件 Chisel。可以让你的调试更Easy. 1.安装Chisel 源码地址: Chisel Chisel 使用 homebrew 来安装,如果你没有安装homebrew, 参考 homebrew 。 1 2 brew update brew install chisel 安装完成按照安装日志上的提示,在 ~/.lldbinit 文件中添加一行,没有则新建。 提示类似如下: 1 2 3 ==> Caveats Add the following line to ~/.lldbinit to load chisel when Xcode launches: command script import /usr/local/opt

GDB在ARM板中的应用

依然范特西╮ 提交于 2020-03-25 08:13:53
GDB的下载: http://www.gnu.org/software/gdb/ 下载gdb-7.4.tar.bz2 1.解压: tar xjf gdb-7.4.tar.bz2 2.编译gdb和gdbserver 2.1 编译gdb:    cd gdb-7.4/   .configure -- target=arm-linux //配置    make //编译    make install //安装,注意如果直接运行make install的话,直接撞到pc机的usr/bin中去了。我不想这么直接安装,想看看安装时生成什么东西?    vi makefile,然后搜索prefix,这prefix就是指代安装的路径。因此我可以自定义我的安装路径   mkdir tmp    make install prefix = $PWD / tmp   此时可以去tmp目录下,看一下都生成了什么东西。你会看到有bin include lib share目录。进入bin目录,你会看到arm-linux-gdb的程序。 2.2 编译gdbserver   cd gdb / gdbserver   .configure --host = arm-linux    make    编译的过程中会出现错误:PTRACE GETSIGINFO没有定义。-I表示头文件在哪里。在

pyCharm远程调试

一个人想着一个人 提交于 2020-03-24 14:07:11
基本配置 假设服务器 IP 地址为 90.0.0.50 ,已经开启 SSH 服务,并且安装了 Python,本地 Project 名为 ML-Project 。 首先配置 Pycharm 服务器的代码同步,打开 Tools -> Deployment -> Configuration ,点击左边的 + 添加一个部署配置,输入配置名 Name , Type 选择 SFTP ,然后确认。 配置远程服务器的 IP,端口,用户名和密码, Root Path 是项目文件在远程服务器中的根目录,根据需求配置,例如 /home/ubuntu/ML ,这个目录需要登录用户的创建权限。 点击 Mappings ,将 Local Path 设置为 Windows 下的工程目录,例如 D:\Projects\ML-Project ,自己视情况设定。将 Deployment path on server 设置为远程服务器中的项目目录,例如 /ML-Project ,注意目录前要加 / ,不然后面运行程序会找不到文件, Web path on server 暂时不用设置,貌似 Web 相关的程序会用到,需要用到的话请自行 Google。 点击 Excluded Paths 可以设置一些不想同步的目录,例如软件的配置文件目录等。 另外打开 Tools -> Deployment -> Options ,将

大牛都在用的IDEA调试技巧

隐身守侯 提交于 2020-03-24 13:50:20
导读 文章转载自 https://mp.weixin.qq.com/s?__biz=MzI0ODYzMzIwOA==&mid=2247483950&idx=1&sn=22547fb4e1d21851b4d3a1c90e2e7aa3&chksm=e99c8039deeb092f09e716c66af31a4a08dfb918ff201e03778f01ac11b520006fc18e2f0fe9&scene=126&sessionid=1585026418&key=eadb0cb5ef4c1752272952c6f598727fa3f5acf307757ea9d6e2fd02c6f8fe21e7559fb168c6f36eaf3ba9278442bee1db07fc53ad550176a2e79fa3f9a5f460e97d6ccb6826df5c0c56723510258973&ascene=1&uin=MTA3MjI0MTk2&devicetype=Windows+10&version=62080079&lang=zh_CN&exportkey=Ac%2Fs4sUzw9sFrOJ9Y2e4SNg%3D&pass_ticket=fuWdYFindcdGpF10fnKSlQa5NqflzhdeQ6SAdKKpNo0%3D 前天面试了一个985高校的实习生,问了他平时用什么开发工具

反调试技术常用API,用来对付检测od和自动退出程序

拜拜、爱过 提交于 2020-03-24 08:00:59
在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己。为了了解如何破解反调试技术,首先我们来看看反调试技术。 一、Windows API方法 Win32提供了两个API, IsDebuggerPresent和CheckRemoteDebuggerPresent可以用来检测当前进程是否正在被调试,以IsDebuggerPresent函数为例,例子如下: BOOL ret = IsDebuggerPresent(); printf("ret = %d\n", ret); 破解方法很简单,就是在系统里将这两个函数hook掉,让这两个函数一直返回false就可以了,网上有很多做hook API工作的工具,也有很多工具源代码是开放的,所以这里就不细谈了 二、查询进程PEB的BeingDebugged标志位 当进程被调试器所附加的时候,操作系统会自动设置这个标志位,因此在程序里定期查询这个标志位就可以了,例子如下: bool PebIsDebuggedApproach() 8 R& ]/ {7 V6 T' z, K { char result = 0; q" V3 N9 u5 @# q% d+ E$ J __asm { // 进程的PEB地址放在fs这个寄存器位置上 " C*

VS编辑并继续功能

强颜欢笑 提交于 2020-03-22 17:31:43
VS编辑并继续功能: MSDN对该功能的描述如下: “编辑并继续”是一种省时的功能,使您能够在程序处于中断模式时更改源代码。 当您通过选择一条类似 Continue 或 Step 的执行命令继续执行程序时,“编辑并继续”有限制地自动应用代码更改。 这允许您在调试会话期间更改代码,而不是停止程序,重新编译整个程序,再重新启动调试会话。 开启“编辑并继续”功能:工具->选项->调试->编辑并继续。 在开启编辑并继续功能后,在调试过程中编辑可能会出现如下问题: 1. 解决方法:工具->选项->调试->常规,选中“一个进程中断则中断所有进程”选项。 2. 解决方法:进入项目属性,修改目标平台为x86。 3. 解决办法:主要正对第二种情况,因为这种情况比较常见,必须保证项目属性中,没有选中优化代码,并且debug级别必须是full,在none和pdb-only下都会出现这种情况。 来源: https://www.cnblogs.com/sauronKing/p/4745008.html

解决VS2005中异常助手与编辑并继续(edit and continue)无效的具体方法

烈酒焚心 提交于 2020-03-22 17:31:26
上次按装了中文包后,我把启用调试器选项中的启用非托管代码调试和启用visual studio 宿主进程都打√ 结果在调试时发现不能进行调试中断的编辑,郁闷了一天都没找到原因,编辑并继续是一项很爽的调试功能,开发者可以在中断调试的模式下修改程序(当然有例外的程序部分)代码,然后在不需要重新编译就可以继续调试或运行,任何建立在RCL原理的语言理论上都可以这样设计 根据官方的详细文档 在以下调试方案中,“编辑并继续”不可用: · 混合模式(本机/托管)调试。 · SQL 调试。 · 调试 Dr. Watson 转储。 · 在未选择“在未处理的异常上展开调用堆栈”选项的情况下,在发生未处理的异常之后编辑代码。 · 调试嵌入式运行库应用程序。 · 从“调试”菜单中使用“附加到”调试应用程序,而不是使用“启动”运行应用程序。 · 调试优化后的代码。 · 当目标为 64 位应用程序时,调试托管代码。如果要使用“编辑并继续”,必须将目标平台设置为 x86。((“Project 属性”对话框->“编译”选项卡->“高级编译器”设置。) · 如果由于生成错误无法生成新版本的代码,则对旧版本的代码进行调试。 后来才知道,其实我中的就是第一条,混合模式!把启用调试器选项中的√都去掉就可以了,罪魁祸首就是安装中文SQL2005中的中文安装包后,默认的启用调试器选项中的启用visual studio

web developer tips (29):在web应用项目里启用“编辑并继续”功能

醉酒当歌 提交于 2020-03-22 17:31:05
原文地址: How to enable Edit and Continue feature for Web Application Projects 如果你在调试一个web应用程序的时候,想进行编辑,可以有如下两种方法: http://www.watch-life.net/visual-studio/how-to-enable-edit-and-continue-feature-for-web-application-projects.html 方法一:在web项目的属性页里的web标签页,选中“ 启用编辑并继续 ”项 2、方法二:菜单 工具+选项+调试+编辑并继续 ,选中“ 启用编辑并继续 ”项。 我觉得这个“ 编辑并继续 ”功能很实用,可以边调试程序边修改程序,省得做了很少的修改又要重新启动调试。 注意:只有 Visual Studio 2008 的标准版和专业团队版才支持这个功能,另外不能在调试状态更改选项。 更多文章见: 守望轩 [ http://www.watch-life.net /] 来源: https://www.cnblogs.com/wuwuwu/archive/2009/07/24/6162983.html