程序调试

gdb调试多进程程序——gdb attach用法

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-19 18:30:10
前一阵在调试多进程mpi死锁的bug,多进程程序只靠输出来定位bug是一件相当麻烦的事=.=!,后来发现可以用gdb attach来调试多进程程序。 原来一直用gdb调试单进程的程序,感觉打开了新世界的大门哈哈哈。 下面介绍如果用gdb attach调试正在运行的程序,用法如下。 第一步:运行多进程程序。 首先正常运行多进程程序。在发生mpi死锁之后,不要停掉程序!! 第二步:获得运行程序的所有pid。 开启另一个窗口,输入 ps -aux | grep 可执行文件名,此时屏幕上会打印出运行程序的信息。 例:运行两个进程的程序,会出现如下3条信息,可以分为两类,一类是运行程序的信息,另一类是grep搜索进程的信息。可以通过最后一列来区分。 下面3条信息中最后一列为运行命令的为前两条命令是我们需要关注的命令。 进程的pid在第二列,此时两个进程的pid分别为209947 和209959。 $ ps aux | grep test z 209947 0.1 0.0 431664 5552 pts/91 Sl+ 16:52 0:00 运行命令 z 209959 0.0 0.0 92984 596 pts/91 S+ 16:52 0:00 运行命令 z 211971 0.0 0.0 109584 956 pts/92 S+ 16:53 0:00 grep test 第三步

hadoop本地调试方法

坚强是说给别人听的谎言 提交于 2020-02-19 08:51:07
  Mapreduce 是Hadoop上一个进行分布式数据运算和统计的框架,但是每次运行程序的时候都需要将程序打包并上传的集群环境中运行,这就会让程序的调试变得十分不方便。所以在这里写下这篇博客和大家交流学习如何在本地调试Mapreduce程序。     本地是windows系统,文件路径也是本地   首先需要将编译后的windos 放入解压后的hadoop解压包的bin目录下,还有hadoop,dll文件不同版本的windows对应的winutils.exe是不同的。具体编译方法,网上可以找到相关教程 这里就不详说了。当然网上也有好心人编译好的,来后就能用。   然后将hadoop的HADOOP_HOME配置到环境变量中去。在PATH中配置PATH=“%HADOOP—HOME\bin%”;   可能有些同学运行程序后仍会包报错NullPointException。需要将bin目录下的hadoop.dll考到C盘的system32下一份。 再次运行,非常好。   在本地运行需要配置两个参数    conf.set( "mapred.job.tracker", "local"); conf.set( "fs.default.name", "local"); 其实这两个参数也可以不用配置,因为系统默认的就是本地 package worldcount; import java.io

通过ADB调试安卓程序

社会主义新天地 提交于 2020-02-19 07:45:40
ADB,即 Android Debug Bridge ,它是Android开发/测试人员不可替代的强大工具. 1. 下载ADB后,将以下四个文件放到某个文件夹下即可.因为打开Cmd默认路径是 C:\Users\{user} 路径,所以我本地放在了 C:\Users\admin 路径下. 2. 验证ADB.在Cmd命令行进入存放上述四个文件的目录,输入 adb 回车,显示如下信息即正常. 3. 安卓设备打开 开发者模式 .选中 USB调试 , USB连接PC ADB功能 , 网络ADB调试 .当选中 网络ADB调试 时,就会出现类似 192.168 . 169.106 : 5555 的IP和端口,可使用该IP和端口通过ADB连接该安卓设备. 4. 执行 adb devices 可以列出相关设备 5. 执行 adb connect 192.168 . 169.106 : 5555 连接到该安卓设备,即可进行远程调试等. 6. 可通过 adb logcat *:E 查看日志. 7. 可通过 adb push soure target 将本地文件上传至安卓设备指定目录,例如: adb push C:/Users/admin/libgpio_jni.so /system/lib/ 8. 如果向 system 路径下执行 push 命令时提示 Read-only file system 的错误

程序Crash后的调试技巧

寵の児 提交于 2020-02-17 07:42:34
当我们的程序突然死掉了,Xcode突然送出一段 "message sent to deallocated instance" 的错误,我们该怎样定位我们的程序bug呢? 又或者我们已经通过AdHoc发布了我们的β版程序,更甚至于我们的程序已经发布到了app store上;而当我们的程序突然在测试人员,或者是最终用户那里突然当掉,是否能收集到这样的日志信息,供我们解析bug呢? 下面的文章中我将逐步深入地说明这些技巧 模拟器上显示堆栈信息 当我们在模拟器上调试时,可能经常遇到下面的内存访问错误: 1 2011-01-17 20:21:11.41 App[26067:207] *** -[Testedit retain]: message sent to deallocated instance 0x12e4b0 首先,我们为了定位问题,需要Xcode帮我们显示栈信息,可以通过Scode中执行文件的属性来设置。如下图所示,选中 MallocStackLogging 选项。该选项只能在模拟器上有效,并且如果你改变了iOS的版本后也需要再次设定该选项。 这之后,你就可以在终端输入 info malloc-history 命令,如下所示; 1 (gdb) info malloc-history 0x12e4b0 之后得到如下的堆栈信息,从此分析具体的问题所在。 除此之外,也可以使用下面的命令

XCode4.2免证书真机发布及调试

时光怂恿深爱的人放手 提交于 2020-02-15 23:33:30
以下内容转自java123. 但是根据xcode4.2自己找到了 xcode4.2没 code signing的解决办法实现真机调试。 ------------------------------------------------------------------------- 由于没有购买苹果的开发者证书,所以目前大多数开发环境都是使用以下的方式实现开发与真机测试(本文部分摘自网络) 使用环境:越狱过的iPhone 机器 Mac OS 10.6.8 xCode 4.0.1 及Xcod 由于没有购买苹果的开发者证书,所以目前大多数开发环境都是使用以下的方式实现开发与真机测试(本文部分摘自网络) 使用环境:越狱过的iPhone 机器 Mac OS 10.6.8 xCode 4.0.1 及Xcode4.0.2 操作步调过程: (一)制作证书 1、 打开 Finder->应用程序->实用工具 -> 钥匙串访问 2、单击:"钥匙串访问"选择 "证书" 再选择"创建证书"过程如下图: 3、证书名称必须填写为:"iPhone Developer" ,(不克不及随便填写)然后点击"创建"。(如图) (二)修改xcode配置文件 注意:由于这些配置文件是系统文件,修改系统文件需要管理员权限才可以进行操作,所以保存的时候不克不及直接保存,会遇到系统提示"你没有修改此文件得权限"

the-art-of-command-line 2019-02-15

末鹿安然 提交于 2020-02-15 18:38:02
命令行的艺术 前言 基础 日常使用 文件及数据处理 系统调试 单行脚本 冷门但有用 仅限 OS X 系统 仅限 Windows 系统 更多资源 免责声明 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 这篇文章是 许多作者和译者 共同的成果。 这里的部分内容 首次 出现 于 Quora , 但已经迁移到了 Github,并由众多高手做出了许多改进。 如果你在本文中发现了错误或者存在可以改善的地方,请 贡献你的一份力量 。 前言 涵盖范围: 这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到 覆盖面广 (涉及所有重要的内容), 具体 (给出具体的最常用的例子),以及 简洁 (避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。 本文主要为 Linux 所写,但在 仅限 OS X 系统 章节和 仅限 Windows 系统 章节中也包含有对应操作系统的内容。除去这两个章节外,其它的内容大部分均可在其他类 Unix 系统或

VUE系列——Chrome安装Vue调试插件

偶尔善良 提交于 2020-02-15 12:41:49
前言 Vue是一个很好用的前端,但是在浏览器上面不能直接打断点调试程序。 下面介绍通过安装调试插件对程序进行调试 按F12之后,出现一个Vue选项,效果如下: 安装过程 step1 下载插件并解压 链接: 点我进入 提取码:2tcj step2 进入到Chrome扩展程序页面点击开发者模式 chrome://extensions/ step3 点击加载已解压的扩展程序 step4 选择解压后的文件夹 结果 出现下面的效果就已经安装好了: 来源: CSDN 作者: a伊雪 链接: https://blog.csdn.net/u010565037/article/details/104317239

再见了NSLog

半城伤御伤魂 提交于 2020-02-15 05:44:39
本文原文发表自我的【 自建博客 】,cnblogs同步发表,格式未经调整,内容以原博客为准 我是前言 打Log是我们debug时最简单朴素的方法, NSLog 对于objc开发就像 printf 对于c一样重要。但在使用 NSLog 打印大量Log,尤其是在游戏开发时(如每一帧都打印数据), NSLog 会明显的拖慢程序的运行速度(游戏帧速严重下滑)。本文探究了一下 NSLog 如此之慢的原因,尝试使用lldb断点调试器解决DebugLog问题。 小测试 测试下分别使用 NSLog 和 printf 打印10000次耗费的时间。 CFAbsoluteTimeGetCurrent() 函数可以打印出当前的时间戳,精度还是很高的,于是乎测试代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 CFAbsoluteTime startNSLog = CFAbsoluteTimeGetCurrent(); for (int i = 0; i < 10000; i++) { NSLog(@"%d", i); } CFAbsoluteTime endNSLog = CFAbsoluteTimeGetCurrent(); CFAbsoluteTime startPrintf = CFAbsoluteTimeGetCurrent(); for (int i = 0; i <

信不信:IDEA 的 Debug 调试,你可能只用了 10%

北战南征 提交于 2020-02-15 00:50:09
一、Debug开篇 首先看下IDEA中Debug模式下的界面。 如下是在IDEA中启动Debug模式,进入断点后的界面,我这里是Windows,可能和Mac的图标等会有些不一样。就简单说下图中标注的8个地方: 1、以Debug模式启动服务,左边的一个按钮则是以Run模式启动。在开发中,我一般会直接启动Debug模式,方便随时调试代码。 2、断点:在左边行号栏单击左键,或者快捷键Ctrl+F8 打上/取消断点,断点行的颜色可自己去设置。 想要其他资料的请添加资料分享群934623944就可免费获取 3、Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置,如图1.2。 4、调试按钮:一共有8个按钮,调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。在菜单栏Run里可以找到同样的对应的功能, 5、服务按钮:可以在这里关闭/启动服务,设置断点等。 6、方法调用栈:这里显示了该线程调试所经过的所有方法,勾选右上角的[Show All Frames]按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法。 7、Variables:在变量区可以查看当前断点之前的当前方法内的变量。 8、Watches:查看变量,可以将Variables区中的变量拖到Watches中查看

Helloworld代码概貌

扶醉桌前 提交于 2020-02-14 20:13:34
关于HelloWorld代码的特点的详细讲述 #include<stdio.h> void main() { printf(helloworld helloyicheng); getchar(); } (对如上的代码的注释及调试) 2.注释—程序员的解释 讲述了两张注释方式: // (2) /**/ 3.代码出错的情况下,对代码的调试的详细讲述 (在代码中通过加断点进行调试) 4讲述了#include预处理指示符的作用 (getchar和printf两个函数的声明位于stdio.h文件中) #inlcude的作用以及一些特点 5.C程序的结构 (详细讲解) (include的全局声明) (include的内部声明) (printf就是打印一段字符串) (getchar 等待输入一个字符) (如下所示,一行可以写多个语句) (main函数有且仅有一个) (C语言不提供任何语句) 来源: CSDN 作者: 韩淼燃 链接: https://blog.csdn.net/weixin_36691991/article/details/104316379