调试

xFace的快速入门--IOS

血红的双手。 提交于 2019-12-21 03:03:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ios系统的快速入门和Android的大部分都差不多,模拟器这部分是一样的,只是player的使用上有点区别,今天就来看看ios设备的快速入门。 1、下载工具 便携版模拟器Emulator(Windows) 下载地址: http://polyvi.github.io/openxface/download/PortableEmulator.zip xFace Player 下载地址: http://polyvi.github.io/openxface/download/xFacePlayer_iOS.zip 2、编写应用程序 选择您喜欢的网页制作工具,如:Dreamweaver、EditPlus,完成一个简单的Hello World页面,保存完成的页面为index.html,保存代码的路径不能包含中文。 3、调试应用 PC调试 注明:以下便携版的内容仅适用于Windows,对于其他系统的用户,请按照 http://polyvi.github.io/openxfac ... nstallAndDebug.html 中的说明进行调试 (1)下载便携版模拟器—PortableEmulator.zip并解压到本地(注意:解压路径请不要含有中文字符) (2)进入解压后Chrome_Emulator所在目录,启动Chrome

C语言常用代码组织形式

China☆狼群 提交于 2019-12-13 21:57:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、常用的代码组织形式 将所需要使用的函数分类,总体思想是如果两个函数操作的是一个资源,完成的是类似的功能,则将这两个函数划分在一个模块中,比如对一个链表的的插入和删除操作而言应该划分到一个模块内,在C语言中,一个文件即代表一个模块。 其次,如果模块中的函数是一个函数接口,需要被其他模块所引用,则应当定义为外部函数。如果函数仅在模块内使用,则应当定义为static函数。这样做可以防止各个模块中的函数因为重名现象而出现的错误。使用static关键字定义函数之后,该函数对其他的模块来说是透明的,只有本模块的函数可以对其进行调用。同理,仅在模块内使用的全局变量也应当定义为static。 最后,定义一个common.h头文件,该头文件包括以下内容: 头文件区:包含所有模块共同需要的头文件。例如常用的stdio.h、stdlib.h等 全局宏区:包含所有模块公用的宏定义,例如调试开关,一些缓冲区的大小等 全局变量区:包含所有非static全局变量的声明 函数接口区:包含所有模块的函数接口 有了该common.h头文件后,各个模块的头文件只要包含该头文件,就可以应用函数接口和全局变量,包含所需要的头文件和宏定义。 下面是一个经过组织的链表处理程序: /** * common_list.h 总领头文件 * */ /*

Linux 自检和 SystemTap

杀马特。学长 韩版系。学妹 提交于 2019-12-06 12:35:04
Linux 自检和 SystemTap 11/20. 2013 用于动态内核分析的接口和语言 现代的操作系统内核提供 自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux® 内核提供这种动态的自检。 SystemTap 是监控和跟踪运行中的 Linux 内核的操作的动态方法。这句话的关键词是 动态 ,因为 SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。它通过一个名为 Kprobes 的应用编程接口(API)来实现该目的,本文将探索这个 API。我们首先了解以前的一些内核跟踪方法,然后在深入探讨 SystemTap 的架构及其使用。 内核跟踪 SystemTap 与一种名为 DTrace 的老技术相似,该技术源于 Sun Solaris 操作系统。在 DTrace 中,开发人员可以用 D 编程语言(C 语言的子集,但修改为支持跟踪行为)编写脚本。DTrace 脚本包含许多探针和相关联的操作,这些操作在探针 “触发” 时发生。例如,探针可以表示简单的系统调用,也可以表示更加复杂的交互,比如执行特定的代码行。清单 1 显示了 DTrace 脚本的一个简单例子

iOS 开发之 Xcode断点调试以及动态输出

元气小坏坏 提交于 2019-12-06 11:56:46
1、断点的基本操作   断点的操作非常简单,下面通过几张图来介绍一下如何添加、删除、编辑以及使用断点。 2、全局断点   设置全局断点(异常断点),当遇到错误,Debug程序会自动定位到栈底信息,即跳到出错代码所在行。 3、条件断点   设置条件断点,当满足条件的时候,才触发断点,适合用于循环结构中,可以准确的定位到某次循环。 4、符号断点   符号断点可以中断指定函数的调用,也可以定位到出现异常的代码处,并打印异常信息。 5、NSLog输出   在调试的过程中,经常通过NSLog在控制台输出需要的信息。NSLog输出比较消耗系统资源,输出的数据也可能会暴露出App里的保密信息,所在在发布正式版本之前必须把所有的NSLog输出都屏蔽掉。   NSLog除了输出基本信息,对于结构体也可以一次性输出。 6、动态输出   在程序的调试过程中,除了通过断点调试在Xcode下方查看变量的值,也可以通过NSLog在控制台输出想要的信息。使用NSLog输出需要在运行前就把想要输出的信息写好,如果有改变,需要重新编译运行,效率非常低。   下面介绍一种非常简单实用的方式,在程序运行的过程中,通过在控制台输入相应的指令,可以快速的打印输出需要的信息,非常的方便。   动态输出的指令有两个,p和po,与NSLog用法类似,p用于打印输出普通信息,po用于打印输出对象信息。使用动态指令需要与断点配合使用

chromium浏览器开发系列第四篇:如何调试最新chromium源码

三世轮回 提交于 2019-12-04 20:55:00
附上上几篇文章地址,方便大家查看: 下载源码 编译源码 目录结构 接二连三的事情,时间比较紧张,但是还是没有把这个系列的文章丢掉,因为这也是对自己知识的总结吧。提倡大家多写写,以后再看的时候会有种莫名的小激动。 上周写的是 chromium 的目录结构,好像大家不太感兴趣,在我看来这部分很重要。开头有链接地址,大家想看可以再看看。 从源码下载到编译,到目录结构,今天终于到了重要的环节,调试。 在 windows 上,调试工具都是使用微软自家的产品: Visual Studio 或者 winDBG ( windebug )。 Chromium 也是与时俱进,现在主要使用 Visual Studio2013 。我今天主要讲使用 vs2013 调试源码。 我在编译代码那一章( http://my.oschina.net/ghost045/blog/395973 )的时候曾经讲过生成源码工程的东东,如下: set GYP_MSVS_VERSION=2013 set GYP_GENERATORS=msvs-ninja,ninja set GYP_DEFINES=component=shared_library set PATH=C:\depot_tools\python276_bin\;C:\depot_tools\; python.exe src/build/gyp_chromiumsrc

用Android Sutdio调试NDK

ⅰ亾dé卋堺 提交于 2019-12-04 19:30:44
网上用 Android Studio 调试 NDK 的资料不多且分散。我将这几天踩过的坑及经验纪录一下,方便其它朋友。我将从导入一个 NDK Samples 中的项目开始。 演示代码放在 GitHub 上,每个坑为一次Submit。 开发环境 操作系统: Mac OS 10.11.1 IDE: Android Studio 1.5.1 NDK: android-ndk-r10e Native链接其它库 加载 NDK Samples 中的 hello-gl2 项目后,直接运行会出现如下错误: Error:(39) undefined reference to `glGetError' Error:(41) undefined reference to `__android_log_print' ... 在 build.gradle 文件中添加命令来链接相关库,具体可见 Mac下用Android Studio运行NDK samples 。 无法进入Native代码 解决库链接问题后,程序能运行正确运行在设备上,可无法中断在Native代码上的断点处。 看到一些文章,如 《AndroidNDK开发在本地C/C++源代码中设置断点单步调试详细教程》 说的是ADT上的调试; 《Using Eclipse for Android C/C++ Debugging》 (需翻墙

Django 开发中的最佳实践之一

社会主义新天地 提交于 2019-12-04 06:06:26
Django 开发中的最佳实践之一 本文关注 Django 开发中调试的部分。 出自 Flask 项目 旗下的 Werkzeug debugger Werkzeug 这个词在德语里 好像 是工具的意思, 这里 有简要的介绍。和 Django runserver 提供的 50x 页面相比,最大的好处是在堆栈的每一层都可以打开 Python console。 选择下面列出的两种方法之一即可在你的 Django 项目中享受 werkzeug 带来的好处: https://github.com/philippbosch/django-werkzeug-debugger-runserver https://github.com/django-extensions/django-extensions/ 其实第一个方法就是从第二个大杂烩般的 Django Extensions 中单独摘取 werkzeug 出来。 如何设断点进行单步调试呢 通常调试命令行界面的 Python 程序,用 pdb 或者 ipdb 即可。如何在 Django 项目中使用呢? Django PDB 项目提供这样的集成。在 URL 的参数中加上一个 pdb(比如 http://localhost:8000/test?pdb)就会在对应的 view 的入口点设置断点。当代码执行到此断点时,在你运行 runserver

学习CSS你必须踩得那些坑(六)

为君一笑 提交于 2019-12-03 17:40:59
这里加了边框方便 调试 : · 为了能够设置在垂直方向上的高度(padding-top/bottom, margin-top/bottom, height):我们设置行内元素<a> display为inline-block 行内元素是就像水一样,垂直方向上设置高度都没用,所以有时候需要设置为inline-block或block。 有个形象的比喻,inline=>水,inline-block=>果冻,block=>石头 · 设置box-sizing为border-box 默认情况下,元素的height只包括内容区域。但是我们经常需要加入border或者padding,元素的高度的实际高度是padding + border + height,每次你都需要减去padding和border。除了计算麻烦之外,用百分比设置高度的时候,你经常会遇到内容区域溢出的问题: <style> html,body{ height: 100%; width:100%; } .container{ padding: 0 20px; } </style> </head> <body> <div class="container"> Hello World </div> </body> [站外图片上传中……(4)] · 通过line-height进行垂直居中: css 中水平居中很简单,但是垂直居中就不好做了

iOS开发调试和问题解决策略

故事扮演 提交于 2019-12-03 16:44:23
iOS开发调试和问题解决策略 经常会听到有人抛出一些很信息很不全的问题,比如界面显示不正确、后端网络请求不通之类的问题,然后开始瞎猜。 我觉得很有必要分享一下解决问题的范式,因为靠猜的话,十猜九不准。 不要瞎猜,要简单粗暴地解决问题 “不要瞎猜”是解决问题的首要原则,只有不瞎猜,寻找确切的根据,才能精准和快速地解决问题。 其实解决问题基本上是简单粗暴的:收集信息,然后根据信息进行调整,然后继续收集信息...直到问题解决。 收集信息是不可或缺的一个步骤,而它的关键问题就是:收集什么信息才是有价值的?如何收集这些信息? 根据要解决的问题不同,收集的信息类型和方式也会不同。 基本和通用的手段:日志(Log) 日志基本上是各类问题的最基本和最通用的收集信息方式,放在别的问题领域同样适用。 记得以前折腾Linux的时候,不去认真检查日志,真的是想不到问题是出现在哪里。 在iOS开发中呢,NSLog应该是人人都在用了。 然而你也会发现,单纯的NSLog用多了,也会有些问题,比如总是输出一大堆无用的信息,除非你在解决完这个问题或解决别的问题时先把无关的NSLog注释掉。 这种时候,日志框架就派上用场了,它们能帮你控制日志的级别、分类和对应的存放位置,有的还提供了工具帮你检索它。 可以关注 CocoaLumberjack 和 NSLogger ,或者是这个列表: https://github

Python二次元世界-Lisp的帝国斜阳 lambda与closure

吃可爱长大的小学妹 提交于 2019-12-02 14:21:55
Python 二次元世界 - 函数式编程 Function , lambda 与 closure 本章讲述 Python 语言自 Lisp 语言演变而来的一些高级函数编程技巧 如闭包 (closure) 匿名函数( lambda ) 生成器 (yield) 嵌套作用域 (nested scope) 好的 Python 程序员 必须熟练掌握这几种特性 能快速地将代码移植到类 Lisp 语言 如 scheme Emacs-Lisp JavaScript Java8 中 特别提示∶在您浏览本教程时,不要强行记忆。记住一点∶在使用中学习。 1. Function Python 的函数的本质是对象方法和模块属性 声明 / 定义一个函数 def foo(): print “bar” 函数作用于对象 object/reference foo 函数的调用 foo() or obj.foo() 如果没有 return 语句 Python 函数默认返回值是 None >>> def hello(): ... print 'hello world' >>> >>> res = hello() hello world >>> res >>> print res None >>> type(res) <type 'None'> 不同其他编程语言 Python 不可以拥有多个返回值 但是你可以返回一个 类型为