Debugging

self-debugging反调试 往期推荐 轮循检测技术 进程名称检测 调试端口检测 调试与反调试–关键文件检测 Self的英文意思是自己,顾名思义,self-debugging就是通过调试自身检测出是否被调试。 一 : self-debugging反调试原理 1.通过观察下图所知。,当前的进程就是父进程,也就是即将被调试的进程。 2.然后通过父进程来fork一个子进程,如下图所示。 3.子进程实现了调试器的功能,如下图所示。 4.作为调试器的子进程附加父进程,如下图所示。 5.通过子进程调试父进程,进而阻止其他调试器来调试父进程, 阅读详情
Debugging
  Logging运行输出来自一个运行应用的消息,展示它目前的状态。
当错误发生时,来自代码关系的部分的日志消息的(granularity)
可能不是足够的。新的日志消息能够插入到代码来展示更多关于目前
状态的消息但是它会降低这错误定位进程。使用一个debugger来观察
这应用程序的状态时错误定位的最有效的方式。通过GDB,Android NDk
支持本地的代码的调试。
        本地代码应该本编译通过ndk-build命令,或者通过Eclipse 
         IDE使用使用安卓开发工具。在远程调试的建立进程期间,这
         NDK建立系统将产生一系列的文件。
         在AndroidManifest.xml文件中设置可以调试的通过android
         :debuggeble属性。
  这ndk-gdb脚本处理很多错误条件和输出错误信息来让你知道是否任何
这些条件还没有被满足。
   调试Session建立
  这ndk-gdb脚本在开发者的利益上启动调试会话,在调试会话建立期间
知道一系列事件发生,它对于理解在Android上的调试本地代码的片元
是非常有用的。这个完整的调试会话建立如下:
  这ndk-gdb脚本通过使用应用程序管理器来启动目标应用程序。这个
应用程序管理器依赖对Zygote进程的请求。
  Zygote也知道这“app process”,是当安卓系统boot的核心进程。
它在Android平台上的核心角色是启动Dalvik虚拟机和初始化所有的
核心安卓服务。作为一个手机操作系统,Android需要保持应用程序
的启动时间尽可能的小为了提供一个高质量的用户体验。为了达到这,
代替开启一个新的进程来自应用程序,Zygote仅仅依赖forking。在
计算中,forking克隆存在的进程。这新的进程也有与父进程相同的
内存端,通过所有的进程独立的执行。
   在这是,应用程序被启动和执行代码。正如你所提到,这debug会话
并没有建立。
   基于获得应用程序的进程ID,这ndk-gdb脚本在Andorid平台上开启
GDB和让它附加到这运行的应用程序。这ndk-gdb脚本配置端口使用ADB
来让GDB Server对于宿主机可以使用的。之后,拷贝Zygote的二进制文件
和共享的类库开始着GDB的客户端。在这二进制被拷贝,这ndk-gdb脚本
开启GDB客户和调试会话变得活动。在这之后,可以开启调试应用程序。
  建立调试的例子:
  为了看到本地调试的代码,你将使用hello-jni的实例项目。为了简化
调试进程,修改oncreate方法。
  {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("Call Native");
button.setOnClickListener(new OnClickListener() {
public void onClick(View button) {
((Button) button).setText(stringFromJNI());
}
});
setContentView(button);
}
  开启调试
 调试本地代码通过命令行和Eclipse。这一部分将会展示两种方法。
  对于Windows用户的修订
  在window平台上,在Andorid NDK有一个bug,阻止这GDB定位二进制。
这ndk-gdb脚本配置GDB可以使用一个GDB脚本文件。在Window平台上,
这个脚本文件通过额外的返回来产生,引发了这个问题。
   为了修订它,使用Eclipse,打开着<ANDROID_NDK_HOME>/ndk-gdb脚本
在编辑视图中。到文件的结束,和增加修改如下:
   #Fix the line endings.
   sed -i 's/\r\r//' 'native_path $GDBSETUP'
   $GDBCLIENT -x 'native_path $GDBSETUP'
使用Eclipse
  像运行应用程序,Eclipse需要有一个debug配置被定义为了建立一个
debug会话。
    1.run-》debug configuration
    2.选择,Android Native Application
    3.在对话工具bar上旋转着新配置。
    4.浏览按钮旋转目前项目。
    5.单击应用按钮来存储debug配置。
    6.选择debug配置对话框和返回到Eclipse 工作空间。
    
    1.打开hllo-jni.c源文件在编辑视图
    2.定位本地方法,和右键在标记区域,编辑视图的左边框。
    3.正如,选择从上下文菜单来放在一个断点。一个蓝色的点
    被放到了标记bar行来指示断点。
    4.现在断点被放在了,使用top的菜单栏,选择run-》debug 
    Configuration 来启动Debug配置对话。
    5.选择debug配置
    6.点击debug按钮
    7.Eclipse支持不同的视图,workbench布局,对于不同的任务。
    基于点击调试按钮,Eclipse将会问你是否将转到调试视图,点击
    Yes进行。
当本地代码触发断点,这应用程序停止和对调试器一下控制,如下:
这个debug视图给了本地代码的目前状态的简图。在上面的左面,这
Debug视图展示了运行的线程的列表和他们正在运行的功能。在右上角,
这个变量视图给可以获得本地变量的视图和让你监视目前的值。在中
间空间,这本地源代码本展示在Editor视图,和一个箭头展示在marker
条靠近被执行的行。如下:
   通过debug工具条下面的动作被提供:
        Skip All Breakpoints:使所有的断点失效
        Resum:继续执行本地代码知道下一个断点。
        Suspend:通过发送SIGINT阻止信号到进程阻止本地代码的执行,
        允许你查看着本地代码的目前状态。
        Step Into:接下来的本地调用,进入执行
        Step Over:执行下一个native函数和然后停止。
        Step Return:执行知道本地函数的返回。
        Terminate:终止debug会话。
命令行
使用ndk-gdb脚本本地代码被调试。目前这ndk-gdb脚本需要一个UNIX
shell来运行。在windows平台,你将使用Cygwin代替debugging的命令。
首先,打开Cygwin或者widow终端,基于你的平台。将使用hello-jni
例子项目。
         1.确保这Eclipse不在执行为了阻止任何冲突
         2.改变目前目录到这hello-jni项目目录。
         3.从Eclipse删除左面任何文件通过 rm -rf bin obj libs;
         4.编译本地模块通过使用ndk-build在命令行。
         5.为了编译和打包应用程序,确保这ANT建立脚本build.xml
         文件。如果这是第一次你正在奖励这个项目从命令行,
         update project -p 来产生必要的建立文件。如果用Cygwin,
         使用android.bat代替android。
         6.编译和打包项目在debug模式通过询问ant debug在命令行。
         7.发布应用程序到设备或者通过询问ant installd命令到模拟器。
         8.默认,这ndk-gdb脚本询问一个已经存在的运行应用程序;然而,
         你能够是一个这--start或者--launch=<activity>参数来自动
         开启应用程序在debugging会话前。开启debugging会话通过
         ndk -gdb --start来自命令行。当GDB成功的附加到这hello-
         jni应用程序,它将gdb优先。
       9.增加一个断点到hello-jni.c源文件在30行通过使用 b hello
       -jni.c在GDB。
       10.现在定义了断点,在GDB询问c来继续着本地应用程序的执行
       11.使用Android设备或者模拟器,点击本地调用来触发本地函数。
使用GDB命令:
   有一个有用的GDB命令列表,能够通过GDB来调试这本地代码:
   break:放置一个断点到指定位置。这个位置可能是一个函数名,或者
   一个文件名和一个文件的行号。
   enable/disable/delete <#>:Enable ,disables,或者删除断点。
   clear:清除所有的断点。
   next:跳转到下一条命令
   continue:继续执行本地代码
   backtrace:表明这调用的栈。
   backtrace all:表明所有调用的栈包括在每个帧的局部变量。
   等详细命令www.gnu.org/software/gdb/documentation/
debugging ospf 1 event概念及题目 摘要:本文详细解析了华为/华三设备上的debugging ospf 1 event命令,该命令用于实时监控OSPF邻居建立过程中的状态变化(Down→Init→2-Way→ExStart→Exchange→Loading→Full)。通过实验演示了正常建立过程和故障排查(如区域ID不一致问题),并指出该命令能快速定位状态变化点,但需结合packet调试和display命令分析具体原因。强调调试后需立即关闭,避免影响设备性能。适用于网络工程师进行OSPF故障诊断。 阅读详情

相关推荐

windbg调试和断点学习总结2

WinDbg 设置断点 在windbg中,断点设置的地址形式有好多种,可以是以下几种: 1.虚拟地址:即给出直接地址,如 12345678 2.函数偏移量:如DriverEntry+5c. 3.源代码+行数 :`[[Module!]Filename][:LineNumber]` 4.对C++可以对模块中的某个类的方法设置断点:   设置断点语法:           1:

bcbobo21cn的专栏 1万+

如何开启WinDbg本机调试

默认用 WinDbg 进入到本机内核态会报。

xdpcxq的专栏 9517

1. 如何开启WinDbg本机调试

默认用 WinDbg 进入到本机内核态会报。

xhp618的博客 567

WinDbg 崩溃

解压使用:二、 配置导入dump之后在最下面的命令输入框输入命令:等待分析完成。

sunshine_505的博客 1466

解决在使用IAR调试STM8时出错的问题

https://www.amobbs.com/forum.php?mod=viewthread&tid=4266304阿莫电子15楼哥们提供的方法,IAR FOR STM8S 错误 An error occurred while retrieving GDI features: gdi-error [40201]

scGPT-spatial 复现

文章摘要:Spatial scGPT项目复现流程 本文详细介绍了复现Spatial scGPT项目的完整流程,包含数据预处理、模型训练等关键步骤。首先需要使用scanpy加载H5AD文件并进行归一化、对数变换等预处理。然后构建基因词汇表(vocab),提取基因表达值和空间坐标信息。接着使用DataCollator进行数据分箱、掩码和填充处理。最后搭建TransformerModel进行训练。文章特别指出了需要自行补全的缺失部分,包括基因词汇表构建、空间坐标提取、数据集类定义和训练主循环脚本等。作者还提供了详

victory0431的博客 1683

STM8 IAR不识别ST-LINK V2问题解决

STM8 IAR不识别ST-LINK V2问题解决以前一直玩STM32,淘宝推荐发现STM8S103F3P6最小系统板3.6元一个,就买回来玩玩了。一值用Keil,现在改IAR,安装IAR for STM8,但是发现没办法就找百度吧,有的说改成STM8S003,STM8S103K3.改完没用,换个集成开发环境STVD+COSMIC,STVP中烧录程序试试结果也报错,error : the device is protected单击Current tab之后会对芯片进行解密,解密之后就可以烧录程序了,然后再试

sunien的博客 3570

免费大容量国外网盘测评:冷数据归档与rclone加密接入

云存储的本质,是通过对象存储、冗余编码和分层缓存,把本地磁盘容量问题转化为网络访问与数据管理问题。免费大容量国外网盘常以空间换用户规模或付费转化,容量政策、传输策略、协议支持和退出成本,往往比标称容量更决定长期可用性。支持 WebDAV、S3 兼容和命令行工具的服务,可接入 rclone 等自动化流程,再配合客户端加密与冷热分层,用于冷数据归档、老项目备份和家庭影像保存。理解带宽换算、单文件上限、保活机制与传输一致性后,评估话题型大容量网盘与专业向协议网盘,就能把免费空间纳入可靠存储层。围绕免费大容量国外网

weixin_31292729的博客 213

debugging

From Wikipedia, the free encyclopedia    转译自:wiki http://en.wikipedia.org/wiki/Debugging     不当处多指正     这是一篇关于程序方法的文章,不是dos 工具DEBUG        起源:    关于debugging的起源有许多争议.术语bug和debugging流行于40年代,这要归因于Admi

ActionLi的专栏 1135

深信服PT1-AF实验考试

深信服PT1-AF实验考试实验练习可以去深信服的在线实验平台(链接如下):深信服在线实验平台 (sangfor.com.cn)实验考试其实就是把所有的每一部分实验综合了起来以下内容仅做参考,不确保一样。

m0_72019240的博客 7116

Cadence Virtuoso实战:用gm/Id方法搞定折叠式共源共栅放大器设计(附完整仿真流程)

本文详细介绍了在Cadence Virtuoso设计环境中,运用gm/Id方法高效设计折叠式共源共栅放大器的完整实战流程。该方法通过工艺特征曲线,将设计指标映射到晶体管尺寸与偏置,有效克服深亚微米工艺下传统方法的不足。文章以TSMC 180nm工艺为例,从指标拆解、参数查找、电路搭建、仿真验证到问题调试,提供了清晰、可复现的操作指南,并探讨了自动化脚本与版图考量,助力工程师和学生提升模拟IC设计效率与成功率。

jwt8token的博客 647

Remote Debugging 远程调试 那些事儿

大本营在此:https://developers.google.com/chrome-developer-tools/docs/remote-debugging、 关键信息1:谷歌把remote debugging做成协议提交到webkit了,所以基于webkit的浏览器都可以用了,而且用法基本一样。 关键信息2:Google Dev Tools都是HTML,JS和C...

aio69762的博客 1912

代谢组数据分析(二十八):基于广义估计方程(GEE)的方法探究代谢物与临床表型相关性

本研究利用广义估计方程(GEE)方法对代谢组学数据进行了深入分析,旨在探究代谢物与临床表型之间的相关性。代谢组学数据具有高维性、样本间相关性以及混杂因素的复杂性,传统的统计方法难以有效处理这些问题。GEE方法通过引入相关性结构,能够有效地处理样本间的相关性,并同时调整多个混杂因素,从而提高了分析结果的准确性和可靠性。

专注生信领域 1277

c++26新功能—debugging库

本文介绍了C++26标准引入的诊断库及其核心功能。文章首先通过军事"体系战"类比,指出编程语言发展需要完整生态支撑。C++26新增的诊断库包含三个关键调试函数:breakpoint(无条件断点)、breakpoint_if_debugging(条件断点)和is_debugger_present(调试器检测),这些函数标准化了现有的调试工具实现。文章通过Linux环境下的示例代码展示了如何检测调试器并触发断点。最后指出技术发展是渐进式完善的过程,新特性为开发者提供了更高效的调试手段。

fpcc的专栏 514

光学测量仿真软件:Zygo_(12).Zygo软件的用户界面与操作指南

Zygo软件支持用户自定义工具和插件,以扩展软件的功能和适应特定的仿真需求。编写脚本使用Python或其他支持的脚本语言编写自定义工具的脚本。例如,编写一个脚本来计算光束的衍射效率。# 示例脚本:计算光束的衍射效率 import zygo # 导入Zygo软件的API def calculate_diffraction_efficiency(wavelength , grating_period , angle) : """计算光束的衍射效率:param wavelength: 光源波长(单位:米)

kkchenjj的博客 1669

全志平台camera驱动开发(3)MIPI接口camera驱动开发

详细沟通: 请加video_D 目前开发过的allwinner平台: V5/V3/V3S/V40/T3/T7/A64等 开发过的mipi sensor: sony:imx317、imx477、imx274、imx258、imx286、imx307、imx385等 ov:ov2718、ov12895、ov2710等 ar: ar0238等 国产:gc1024、gc1034...

jzwjzw19900922的博客 9029

Vertx Debugging 项目教程

Vertx Debugging 是一个为 Unity 游戏开发环境提供的调试工具集。该项目旨在通过提供可视化和调试辅助功能,帮助开发者更高效地进行游戏开发和调试。Vertx Debugging 项目包含了一系列的调试工具和实用程序,如调试小工具(Gizmos)和可视化工具,这些工具可以帮助开发者更好地理解和优化游戏性能。 ## 项目快速启动 ### 安装步骤 1. **克隆仓库**:

gitblog_01124的博客 730

【WorkBuddy专栏09】WorkBuddy多模态能力深度揭秘

【WorkBuddy专栏09】AI不止会聊天——WorkBuddy多模态能力深度揭秘

AI人人懂 2112

关于QT Creator 5.9.9 无法Debugging,出现Unable to create a debugging engine.解决办法

一、问题:Unable to create a debugging engine.   刚开始使用QT Creator,在正常使用编译程序时都正常,当笔者使用其调试功能却无法使用,在应用程序输出窗口出现 “Unable to create a debugging engine.” 的调试,如图1所示。 图1   笔者使用有道翻译 “Unable to create a debugging engine.” 的意思是 “无法创建调试引擎” ,应该就是无法创建调试环境的意思吧。那就是安装了QT Creator

StrongerHangover丶蒙先生 9886

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Remote Debugging之放开那个webview让我来调戏(试)

(此段可以略过) 随着H5的发展,在安卓开发中逐渐影响了我们原来的一些开发模式。 例如现在在原生中有很多活动页和一些需要经常变化的页都是用嵌在webview里的模式。 而这个时候更必不可少的会遇到的问题就是,安卓与js相互调用的问题。 今天就给大家讲一下,通过调试webview来解决js相互调用出现的问题。(—-正题开始—) 本来有一个项目A,现在要在项目B里面把A的一部分功能分离出来作为

yanghuiyu38的博客 2083

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言的debugging

C语言的debugging 检查语法错误、语义错误和程序状态

优快云_Xian的博客 616

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Whistle Web Debugging Proxy介绍及使用

大家好,今天继续给大家分享一款抓包工具,这款抓包工具是网页的形式,方便多人访问同时维护。Whistle Web Debugging Proxy是一个用于HTTP、HTTPS、WebSocket等网络协议的跨平台调试工具。它可以帮助开发者对网络请求进行捕捉、分析、修改和重定向等操作,从而提高调试效率。Whistle提供了丰富的自定义规则功能,可以满足各种复杂场景下的调试需求。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 2942

《Debugging Applications》读书笔记

《Debugging Applications》读书笔记   按:此书更重视的是预防性编程的实践,例如建立源代码控制系统、Bug跟踪系统,进行assert、trace、comments,进行单元测试等。   Chapter 1 Bugs: Where They Come From and How You Solve Them     The reasons for bugs ge

Luckyman 906

单独下载windbg(Debugging Tools for Windows)工具

最近电脑出现了蓝屏,想研究下什么原因,但操作系统默认无法打开dmp文件,便去微软官网下载windbg,发现微软不单独提供windbg的下载。只在Windows SDK中才包含windbg工具,或者去下载老版本的。感觉不爽,只是查看dmp文件,干嘛去安装Windows SDK。          没办法,不喜欢老版本的和破解版的,只能去下载Windows SDK,这是Web安装版的Window

Johnson的专栏 6万+

【论文概述】delta debugging

这是Knuth 的一篇论文,原文下载在这里有:http://download.youkuaiyun.com/detail/u013012544/6982095,是北京大学本科生算法设计与分析2014年春季课程的必读论文之一。

6339

【STL】_HAS_ITERATOR_DEBUGGING

本文介绍了用于控制调试版本中迭代器调试功能的宏 _HAS_ITERATOR_DEBUGGING,现已被官方弃用,推荐改用 _ITERATOR_DEBUG_LEVEL 宏。

呆瓜的博客 244
上一篇: 控制Log
下一篇: TroubleShoot
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值