note

本文将弥补之前的遗漏部分。

continue

前面提到,当设置断点后,使用stepnextfinish,程序会停下来,需要程序继续运行,键入continue, 程序可自动继续向下执行.

设置断点

(lldb) breakpoint set --line 14
Breakpoint 1: where = demo`main + 151 at demo.cpp:14:9, address = 0x0000000000401277

运行程序

(lldb) run
Process 82513 launched: '/home/xx/demo/libevent_demo/demo' (x86_64)

程序停下来了

Process 82513 stopped
* thread #1, name = 'demo', stop reason = breakpoint 1.1

继续执行

(lldb) continue

完整输出

(lldb) breakpoint set --line 14
Breakpoint 1: where = demo`main + 151 at demo.cpp:14:9, address = 0x0000000000401277
(lldb) run
Process 82513 launched: '/home/xx/demo/libevent_demo/demo' (x86_64)
ABCDEF var_a=1 the print following is from call's output ---------------------------- Process 82513 stopped
* thread #1, name = 'demo', stop reason = breakpoint 1.1
frame #0: 0x0000000000401277 demo`main(argc=1, argv=0x00007fffffffde88, env=0x00007fffffffde98) at demo.cpp:14:9
11 std::cout << "var_a=" << var_a << "\n\n";
12
13 std::cout << "the print following is from call's output\n\n----------------------------\n\n";
-> 14 car new_car;
15 new_car.print_name();
16
17
(lldb) continue
Process 82513 resuming
my name is october Process 82513 exited with status = 0 (0x00000000)

程序无异常, 退出返回值为0

Process 82513 exited with status = 0 (0x00000000)

指定文件设置设置断点

准备

这里准备了另一个文件 car.hpp, 源码如下

#ifndef _car_h
#define _car_h
#include <iostream>
class car
{
public:
car(const car& instance) = delete;
car(const car&& instance) = delete;
car& operator = (const car& instance) = delete;
car& operator = (const car&& instance) = delete; car(){}
~car(){} void print_name()
{
std::cout << "my name is october\n\n";
}
}; #endif //! _car_h

调用代码如下:

    car new_car;
new_car.print_name();

使用breakpoint set --file [文件名] --line [行号] 可指定文件设置断点。

(lldb) breakpoint set --file car.hpp --line 18
Breakpoint 2: where = demo`car::print_name() + 12 at car.hpp:18:19, address = 0x00000000004012ec

p/<fmt> 输出

p/t 输出二进制

p/t [变量名] 将输出二进制

(lldb) p/t var_x
(int) $2 = 0b00000000000000000000000000010011

p/o 输出十进制

p/o [变量名] 将输出十进制

(lldb) p/o var_x
(int) $1 = 023

p/o 输出十六进制

p/t [变量名] 将输出十六进制

(lldb) p/x var_x
(int) $0 = 0x00000013

其他进制? 这里

lldb调试C++总结(3)的更多相关文章

  1. iOS逆向工程之Hopper+LLDB调试第三方App

    LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...

  2. iOS LLDB调试器

    随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器.它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.LLDB为Xcode提供了底层调试环 ...

  3. 使用Python脚本强化LLDB调试器

    LLDB是Xcode自带的调试器,作为一个iOS应用开发程序员,平时我在开发应用时会使用LLDB来调试代码.在逆向应用时,也会用到LLDB来跟踪应用的执行过程. LLDB还内置了一个Python解析器 ...

  4. LLDB调试基本使用

    在平时开发中,我们可能需要调试某些东西,比如查看给服务器发请求时传过去的参数,如果不适用LLDB的话我们用的最多的就是通过NSLog方式去打印,但现在我们可以精简这个步骤,那就是使用LLDB调试命令. ...

  5. iOS 开发者旅途中的指南针 - LLDB 调试技术

    文章转载于:iOS 开发者旅途中的指南针 - LLDB 调试技术 今天给大家介绍的内容,无关乎任何功能性开发技术,但又对开发的效率影响至深,这就是调试技术. 何为调试呢,比如我们用 print 函数在 ...

  6. centos7使用lldb调试netcore应用转储dump文件

    centos7下安装lldb,dotnet netcore 进程生成转储文件,并使用lldb进行分析 随着netcore应用在linux上部署的应用越来越多,碰到cpu 100%,内存暴涨的情况也一直 ...

  7. centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)

    写个demo来玩一玩linux平台下使用lldb加载sos来调试netcore应用. 当然,在真实的产线环境中需要分析的数据和难度远远高于demo所示,所以demo的作用也仅仅只能起到介绍工具的作用. ...

  8. Xcode - LLDB调试技巧

    LLDB是Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.平时用Xcode运行程序,实际走的都是LLDB.熟练使用LLDB,可以让你debug事半功倍. ...

  9. Swift 使用 LLDB 调试命令

    swift 和 oc 的语法不一样: Xcode 调试技巧之 Swift 篇 打印和赋值,观察数值变量和view对象属性 p指令可打印其对象类型.内存地址以及该对象的值等具体信息, po指令则是打印其 ...

  10. iOS - 浅谈LLDB调试器

    摘要 LLDB是Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.平时用Xcode运行程序,实际走的都是LLDB.熟练使用LLDB,可以让你debug事半功 ...

随机推荐

  1. 毕业设计之zabbix 之mysql主从状态的监控

    建立监控脚本在自定义的位置 /usr/local/zabbix/script/ [root@mysql.quan.bbs script]$pwd /usr/local/zabbix/script [r ...

  2. ggplot 局部放大

    需要安装包:ggforce,下面以R自带数据做局部放大演示. require(ggplot2) require(ggforce) require(reshape2) data(CO2) co2< ...

  3. 09 eclipse配置maven环境

    eclipse配置maven环境 一.打开eclipse:Window>>Preferences: 二.搜索:"maven",然后点击:"Installati ...

  4. 面向多场景而设计的 Erda Pipeline

    作者|林俊(万念) 来源|尔达 Erda 公众号 Erda Pipeline 是端点自研.用 Go 编写的一款企业级流水线服务.截至目前,已经为众多行业头部客户提供交付和稳定的服务. 为什么我们坚持自 ...

  5. Sharding-JDBC 实现垂直分库水平分表

    1.需求分析

  6. hashtable深度探索

    1.什么是哈希表(hashtable)?为什么要发明哈希表? 首先回答第二个问题,在之前的数据结构中我们学习了数组,链表,二叉树等数据结构,记录在结构中的相对位置是随机的,和记录的关键字之前不存在确定 ...

  7. mystar01 nodejs MVC 公共CSS,JS设置

    mystar01 nodejs MVC gulp 项目搭建 config/express.js中定义别名 //将下载的第三方库添加到静态资源路径当中,方便访问 app.use('/jquery', e ...

  8. Android Bitmap 全面解析(一)加载大尺寸图片

    压缩原因:1.imageview大小如果是200*300那么加载个2000*3000的图片到内存中显然是浪费可耻滴行为;2.最重要的是图片过大时直接加载原图会造成OOM异常(out of memory ...

  9. UILabel总结

    UILabel 能显示文字,不能直接通过addTarget...方法监听点击 1. 常见属性 @property(nonatomic,copy) NSString *text; 显示文字 @prope ...

  10. 一个简单的Extjs继承实现

    function extend(sub,sup){ //目地:实现只继承父类的原型对象 //1.用一个空函数据中转,目地进行中转 var F = new Function(); //2.实现空函数的的 ...