7 天前 / HueiFeng
前几天看到姜老师的旧文用 VSCode 编译和调试 MySQL,每个 DBA 都应 get 的小技能 [1], 文末留了一个思考题,如何修改源码,自定义版本,使得 select version() 输出自定义内容 调试过程参考 macOS VSCode 编译调试 MySQL 5.7[2] 内部 Item 对象参考从 SQL 语句到 MySQL 内部对象 [3] 源码面前没有秘密,建义对 DB 感兴趣的尝试 debug 调试。本文环境为 mac + vscode + lldb 依赖及插件 vscode 插件: C/C++C/C++ Clang Command AdapterCodeLLDBCMake Toolsmysql 源码: mysql-boost-5.7.35.tar.gz 补丁:MySQL Command Palette -> CMake: Configure 执行...
47 天前 / HueiFeng
首先声明一下,这是一个很深的话题,也是朋友真实遇到的,它用 DynamicMethod + ILGenerator 生成了很多动态方法,然而这动态方法中有时候经常会遇到溢出异常,寻求如何调试 动态方法体,我知道如果用 visual studio 来调试的话,我个人觉得很难,这时候只能用 windbg 了,接下来我聊一下具体调试步骤。 1. 测试代码为了方便讲解,上一段测试代码。 classProgram { privatedelegateintAddDelegate(inta,intb); staticvoidMain(string[]args) { vardynamicAdd=newDynamicMethod("Add",typeof(int),new[]{typeof(int),typeof(int)},true); varil=dynamicAdd....
53 天前 / Android开发
我们工作中常用遇到这样的问题需要调试手机里的网页,而在手机里无法像 chrome 浏览器那样直接调试网页,特别是一些网关加了限制,都禁止抓包调试,之前常用的一种方式是需要翻墙的,不过后来翻墙也不好用了,方式如下: 常用方式 扩展应用 adb 的作用是把手机上的 APP 页面用网页的形式在电脑上打开,开发人员便可根据自己的需求进行调试。下面介绍扩展应用 adb 的使用。 (1)打开谷歌浏览器的扩展应用窗口,如下图: 因为我已经添加了 adb 应用,所以这里不显示“添加至 CHROME”,没有添加 adb 扩展应用的点击“+ 添加至 CHROME”就可以了。
73 天前 / reesunhuang
作为接触 C++ 开发十年的老鸟,我用两个案例来介绍下如何调试大型 C++ 项目吧。 一、调试 Redis 将 Redis 源码从官网下载下来以后,使用喜欢的代码阅读器进行管理(例如 VSCode、CLion、XCode 等)。我这里使用的是 Visual Studio,如下图所示: 在大致了解了 Redis 有哪些代码模块以后,我们把代码拷贝到 Linux 平台,然后编译并使用 GDB 调试器跑起来。如下图所示: 然后按 CTRL+C 将 GDB 中断下来,输入 info threads 查看当前程序的所有线程: 接着挨个使用 thread + 线程编号 和 bt 命令去查看每个线程的上下文调用堆栈: 对照每个线程的上下文堆栈...
79 天前 / 秦小风啊
作者:PerTerbin,就职于字节跳动抖音直播团队。 审核:孙磊,iOS 开发,字节跳动资深工程师 本文基于 WWDC21 Session 10209[1] 梳理。 前言断点对于每个开发者都不陌生,它是我们工作中极其重要的工具。通过断点调试,我们可以在程序运行期间中断程序,并检查程序的各种状态来解决遇到的问题。本文我们将介绍 Xcode 中断点调试的技巧及 WWDC21 中苹果关于断点提出的新技术,学会这些技巧对于开发者来说都非常有必要,它能使我们的工作更加高效。
80 天前 / 趣编程
作为前端开发,基本每天都要调试 Vue/React 代码,不知道大家都是怎么调试的,但我猜大概有这么几种: 不调试,直接看代码找问题 console.log 打印日志用 Chrome Devtools 的 debugger 来调试用 VSCode 的 debugger 来调试不同的调试方式效率和体验是不一样的,我现在基本都是用 VSCode debugger 来调试,效率又高、体验又爽。 可能很多同学还不知道怎么用 VSCode 调试网页,这篇文章我就来介绍下。 我们分别看下 React 和 Vue 的: 用 VSCode 调试 React 代码我用 create-react-app 创建了一个 demo 项目...
130 天前 / 高性能架构探索
你好,我是雨乐! 在上篇文章中,我们分析了线上 coredump 产生的原因,其中用到了 coredump 分析工具 gdb,这几天一直有读者在问,能不能写一篇关于 gdb 调试方面的文章,今天借助此文,分享一些工作中的调试经验,希望能够帮到大家。 写在前面在我的工作经历中,前几年在 Windows 上进行开发,使用 Visual Studio 进行调试,简直是利器,各种断点等用鼠标点点点就能设置;大概从 12 年开始转 Linux 开发了,所以调试都是基于 GDB 的。
159 天前 / 冷星1024
前言:本文介绍 Node.js 中,关于进程、线程调试和诊断的相关内容。进程和线程的方案类似,但是也有一些不一样的地方,本文将会分开介绍,另外本文介绍的是对业务代码无侵入的方案,通过命令行开启 Inspector 端口或者在代码里通过 Inspector 模块打开端口在很多场景下并不适用,我们需要的是一种动态控制的能力。 1. 背景随着前端的快速发展,Node.js 在业务中的使用场景也越来越多,如何保证 Node.js 服务的稳定也逐渐成为一个非常重要事情,传统的服务器架构大多数基于多进程、多线程的,任务的执行是隔离的,一个任务出现问题通常不会影响其他任务...
160 天前 / 箜道
背景 为了提高开发的软件产品安全性,大部分选择的方案防护方案是,通过用成熟的加固软件进行对自己研发的软件做防护,从而达到对软件搭建一个安全防护墙。加固软件主要做的两件事,对软件中关键代码的保护以及提高对软件逆向反编译的门槛。 那么软件安全性防护墙的第一道门那就是反调试。反调试技术又细分为静态反调试和动态反调试。下面就针对 window 端的进行梳理反调试检测方案。 进程环境块 BeingDebugged 检测 通过读取进程环境块 PEB 中,是否设置 BeingDebugged 标志(其实这个标志 IsDebuggerPresent 跟这个函数内部执行效果是一样的)...
164 天前 / lyyyuna
前言前几天,公司开发的一个工具在某个工程中总是卡死,进入容器中再次运行,又能顺利运行,感觉挺有意思,于是便 debug 了一下。 这个工具使用 Golang 编写,暂未开源,所以本文只展示部分代码。 问题描述这个工具大致流程是 使用 exec.Command 调用 go list -json all 命令读取 stdout / stderr,再使用 json.NewDecoder 解析代码大致为 cmd := exec.Command("go", "list", "-json", "all")stdouIn, _ := cmd.StdoutPipe()stderrIn, _ := cmd.StderrPipe()var stderrBuf bytes.Buffercmd.Start()dec := json.NewDecoder(stdouIn)dg = &DepGraph{}for...
202 天前 / 前哨君
首发于开源前哨写文章登录答应我,别再用 print 调试代码了,好么?开源前哨 74 人赞同了该文章相信很多程序员在调试代码时,都用过 print。代码少还好说,如果是大型项目,面对众多 print 的输出结果,可能要头大了。 今天推荐一个 GitHub 热门开源项目:PySnooper。 2019 年 4 月 23 日,该项目推出的第一天就收获 2000+ Star,登上了 GitHub 日榜第一位,如今有近 15k Star。Python 开发者应该会喜欢的。 链接:https://github.com/cool-RR/PySnooper PySnooper 是个什么东西?如果你写的 Python 代码不能按如期那样运行,你会绞尽脑汁想为啥出错了。
263 天前 / 开发者头条
大家好,我是周刊菌。 加入「码农周刊 VIP 会员」,一起牛起来! 以下内容选自「码农周刊 VIP 会员」圈子,每日更新,精彩不断。码农周刊是什么?码农周刊是一份专为广大程序员、编程爱好者们打造的 IT 技术周刊。每周发送。 2013 年 9 月 12 日创刊至今,已发送 300 多期,订阅用户超 20 万。 专业、简单、有用,是我们一直坚持的办刊宗旨。一路走来,我们见证了不少订阅用户从编程新手进阶成了高级程序员、架构师、CTO…… 2020 年 4 月,为了给用户提供更优质的服务,我们推出了「码农周刊 VIP 会员」服务。
322 天前 / 秦小风啊
前言 移动互联网时代,网页依旧是内容展示的重要媒介,这离不开 WebKit 浏览内核技术的支持与发展。在 iOS 平台下开发者们需要通过 WKWebView 框架来与 WebKit 打交道。虽然苹果官方提供了关于 WKWebView 的 API 与使用说明,但这并不能满足开发者们的需求,各类复杂场景依旧让我们焦头烂额,而解决方案却不易寻找。此时,优秀的开发者们将目光移向苹果开源的 WebKit 内核代码,试图从中寻找解惑之道,却发现依旧困难重重,坎坷不断,主要问题如下: 内核源码复杂难懂:动辄几个 G 的源码,且缺乏关键代码注释与说明...
368 天前 / 虞大胆
作者:bobyzhang,腾讯 IEG 运营开发工程师 php 编译时有一个 debug 模式,这个模式会关闭内存优化,提示内存泄露,屏蔽调用栈优化可以让我们看到完整的 php c 层面的调用栈。 通常我会编译两个 php 版(一个正常,一个打开 debug)在不同的目录,通过 export 决定使用哪个。 通过 php-config 命令可以看到 configure-options,修改其中的 prefix 和 with-config-file-path 到新的目录,然后添加 --enable-debug 命令 yongkbmaster~php-config Usage:/data/env/runtime/php-7.1.33-debug/bin/php-config[OPTION] Options: --prefix[/data/env/runtime/php...
462 天前 / HueiFeng
前言对于调试的方式有多种,不过在今天我们将看到的监视窗口对变量的监视,当然在这里我们是定制内部的变量值,或者说变量的显示与计算的内容。 注:监视窗口在调试时可以一次显示多个变量。“快速监视”对话框一次显示一个变量。 DebuggerDisplayAttribute 在下面示例中,我们在类上添加 DebuggerDisplay,添加字符串:("Name={Name},Age={Age}"): class Program { static void Main(string[] args) { Student student = new Student() { Name = "Mr.A", Age = 18 };...