2014.01.23 每行代码暴力Log

清醒疯子 发布于 2014年01月23日
tinyfool 等1人欣赏。

我昨天发了个iOS开发步骤。前面几步,我都做得相对轻松,因为我有相对专业一些的项目管理工作经验,对iOS开发也有足够的基础。问题出在第7步“写出功能逻辑图、计算公式、赋值表“。第7步是完全软件开发专业活。不过,我那堆十年前买的书里,应该有一本书可以帮到我。有时间的话,先过一遍:)

光逻辑图这块就很难搞。 我先Log每个方法。确实也理清了多数大逻辑。只是,昨天手上的源码,有一个按钮方法,不知道是在哪里被调用的。viewDidLoad已经结束。然后,没有看到任何方法调用,Button自己出来了。 我在Button里设断点,用lldb bt查看,都没用。因为Button之前的上一步已经不在内存。 这时,我想起Tiny兄说过,每行代码插Log。OK,我就开始暴力Log吧。 昨晚跟老婆讨论了一下,我们觉得这次找到Button的入口后,还是要回头看看是怎么进去的,为什么从那里进。

昨晚回去比较晚,代码也不短,睡得早,没Log完。现在继续:)

祝大家生活工作一切顺利:)

共33条回复
tinyfool 回复于 2014年01月23日

加油,不要怕笨拙,从笨拙开始,不贪走捷径

Onetaway 回复于 2014年01月23日

你老婆也是程序员么。。。

清醒疯子 回复于 2014年01月23日

1楼 @tinyfool

是的:)最算用笨的办法,也要彻底干掉它:)当然我会逐步积累高级大招,努力啊:)

清醒疯子 回复于 2014年01月23日

2楼 @Onetaway

我老婆也读的职业高中,也是计算机应用专业,考的大专也是广州大学的电子商务专业。她在大学用VB考的全国计算机等级二级,我在高中用QB考的二级。前年尾生的孩子,想小孩上幼儿园后,在家里做饭、做期货交易和做iOS应用或游戏开发。我主要负责出来赚生活费:):):)

minddriven 回复于 2014年01月23日

如果只是用 log 找一个bug的话,可以考虑用折半查找的思路;在可能出问题的地方 1/2 一下;看看问题只 log 前还是 log 后;然后不断 1/2 细化下去。

清醒疯子 回复于 2014年01月23日

5楼 @minddriven

谢谢啊,确实应该这样干的:)

cnsoft 回复于 2014年01月23日

莫非是在用那个interface builder .xib 里摆好的?

清醒疯子 回复于 2014年01月23日

7楼 @cnsoft

没有。没有xib 也没有storyboard,纯代码的UI

nickel 回复于 2014年01月23日

笨log是成功他老娘,而且是无所不能超级强大的老娘,就是笨点而已。

清醒疯子 回复于 2014年01月23日

9楼 @nickel

哈哈哈,那我继续Log哈:)

我每行代码Log,还是没发现这Button从哪里进来的。只好先不管它,做了其它功能先:)

指针为空 回复于 2014年01月23日

你太无聊了,上班看见的全是程序员,下班回家看到的还是程序员。。。

清醒疯子 回复于 2014年01月23日

11楼 @指针为空

打算把儿子也发展成程序员:):):)

vinci18 回复于 2014年01月23日

多用断点po几下吧。。。

tinyfool 回复于 2014年01月23日

看上去也许很笨拙,但是 @清醒疯子 在论坛上是老用户了,每次进步一点点,这么长时间下来,我发现比很多精明的人进步的快多了。大巧不工,其实我经常反对初学者追求最佳方案等等,原因在于此,先做先学再扯优化,否则千里之行,永远在美好蓝图里面

pascallijuan 回复于 2014年01月23日

@清醒疯子 我参照你的路子学习就好了……

abigfrog 回复于 2014年01月23日

专门登录看看Log出结果木有

pinxue 回复于 2014年01月23日

这个,建议还是看一下 WWDC 2013, Session 407 Debugging with Xcode 吧。http://devstreaming.apple.com/videos/wwdc/2013/407xdx3xw3kl5xx1h5cs73sp/407/407-HD.mov?dl=1

thulium 回复于 2014年01月23日

能不能先写个帮你每行LOG的程序啥的

清醒疯子 回复于 2014年01月24日

13楼 @vinci18

嗯,po过的:)

清醒疯子 回复于 2014年01月24日

14楼 @tinyfool

谢谢Tiny兄鼓励啊:)继续努力:)

清醒疯子 回复于 2014年01月24日

15楼 @pascallijuan

其实,如果是入门,知乎有很多入门回答:)当然,照做下来,可能还是会吃力:)没关系,有论坛,问我也可以:)

清醒疯子 回复于 2014年01月24日

16楼 @abigfrog

今天已经没有再搞这个问题了。刚才下班时跟老婆又讨论了一下,我们觉得应该是加载事件引发的。等下回去把事件注释掉试试:)

清醒疯子 回复于 2014年01月24日

17楼 @pinxue

谢谢啊,我基础就是太薄了:)

清醒疯子 回复于 2014年01月24日

18楼 @thulium

我觉得不如手工快:)

coredump 回复于 2014年01月24日

为什么大家觉得通过print log调试是笨办法呢? 我已经几乎不记得上次动用gdb设置断点是什么时候的事了。log基本上是我现在所需要的唯一的调试工具。

我的体验就是,如果在开发阶段,就遇到了需要动用高级调试工具才能诊断出的bug,一般来说设计上太复杂了,或者没有理清业务逻辑,或者对使用的库,框架的设计逻辑没有摸透(比如楼主现在遇到的情况)。至少,代码有点混乱,需要重构了。否则不应该通过几步的log看不出问题在哪。

另外,顺便羡慕下楼主,居然可以和老婆一起讨论编程,我觉得这比和老婆一起看A片还酷,还幸福,真难得啊

towser 回复于 2014年01月25日

“跟老婆讨论了一下”,老郝不是那个什么了吗?

tinyfool 回复于 2014年01月25日

25楼 @coredump 一句一句print log,是我一直推荐的笨办法,肯去玩的人很少,我很鼓励

清醒疯子 回复于 2014年01月25日

25楼 @coredump

那我保持这个习惯哈:)

A片也看啊,代码也看啊:)

清醒疯子 回复于 2014年01月25日

27楼 @tinyfool

噢耶,那就继续嚯:)

话说,Log出来的东西超漂亮啊,我好喜欢看啊:)

清醒疯子 回复于 2014年01月25日

肯去玩的人很少

这句话,我太熟了,教我东西的大牛都这样说过:)每次我玩下来,都是超牛的好东西:)

answer 回复于 2014年01月25日

我的主要调戏也是靠printf,不过我是做嵌入式的,只有printf才是最靠谱的。

清醒疯子 回复于 2014年01月26日

31楼 @answer

哈哈哈哈,得到越来越多的正面反馈了:)

darcy 回复于 2014年01月27日

32楼 @清醒疯子 我没辙的时候也使用这种方法,虽然低效但是相对有效,配合一下二分法试着注释掉部分代码,查看该对象的把持者和父view可以让定位代码变的快一些;如果是一个继承的类,还可以把它删了看哪报错,或者用类别覆盖某个必然调用的方法,或者给某些必然调用的属性上打断点

本帖有33个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]