你有几个错误报告都显示同样的问题.他们都是神秘的,有关问题如何发生的类似故事.您按照步骤操作但不能可靠地重现问题.经过一些调查和网络搜索,你怀疑可能会发生什么,你很确定你可以解决它.
遗憾的是,如果没有可靠的方法来重现原始问题,您无法验证它是否真正解决了问题,而不是完全没有任何影响或加剧和掩盖真正的问题.您可能无法修复它,直到它每次都可重现,但这是一个很大的错误而不修复它会导致您的用户出现很多其他问题.
你如何验证你的变化?
我认为对于任何设计软件的人来说,这是一个非常熟悉的场景,所以我确信有很多方法和最佳实践来解决这样的错误.我们目前正在研究我们项目中的其中一个问题,我花了一些时间来确定问题,但无法证实我的怀疑.一位同事正在测试我的修复,希望"没有崩溃的一天运行"等同于"它是固定的".但是,我更喜欢更可靠的方法,我认为这里有丰富的经验.
偶尔,尽管进行了所有的测试工作,我仍然会遇到一个客户的错误报告,我无法在办公室重现.

(向杰夫申请"借用"徽章)
我有一些"工具",我可以尝试找到并修复它们,但它总是让我觉得有点像刀和它一样: -
是否有设置程序或其他技术比任何人用来解决这样的问题?
我正在使用libpcap编程应用程序.当我在正常模式下调试应用程序时,pcap无法获取网络设备.似乎我必须在root中调试应用程序.如何在root中调试应用程序?我有root密码.我认为eclipse有这样的选项,可以为调试应用程序添加root,但我不知道该怎么做.请帮忙.
我想将我的第一个APK /应用程序上传到Android Market,但是我收到了这个错误(顺便说一下,当我在stackoverflow中搜索时,它没有引导我找到正确的链接).
Market不接受使用调试证书签名的apks.创建一个有效期至少50年的新证书.市场要求用于签署apk的证书至少在2033年10月22日之前有效.创建新证书.
虽然事实证明这个问题很相似,但这个人只是说"哦,你提醒我怎么做"而没有实际解释.我看过"答案"中提到的网站,但这是我的问题:
我希望你能说我已经尝试了一些东西!我可能只是忽略了一些简单的事情 - 所以是时候将这些步骤记录在stackoverflow中了!谢谢你的帮助.
我正在尝试使用正则表达式sed.我用kiki测试了我的正则表达式,这是一个用于测试regexpd的gnome应用程序,它在kiki中运行.
date: 2010-10-29 14:46:33 -0200; author: 00000000000; state: Exp; lines: +5 -2; commitid: bvEcb00aPyqal6Uu;
Run Code Online (Sandbox Code Playgroud)
我想author: 00000000000;什么都不替换.所以,我创建了正则表达式,当我在kiki中测试它时有效:
author:\s[0-9]{11};
Run Code Online (Sandbox Code Playgroud)
但是当我测试它时不起作用sed.
sed -i "s/author:\s[0-9]{11};//g" /tmp/test_regex.txt
Run Code Online (Sandbox Code Playgroud)
我知道正则表达式有不同的实现,这可能是问题所在.我的问题是:我如何至少尝试"调试"sed发生的事情?为什么不起作用?
如果我让Chrome document.cookie通过进入控制台并输入document.cookie;它来给我看,我会告诉我,说:
"name=John; gender=male";
但是如果我输入,比方说,document.cookie = 5;它所做的只是添加5;到字符串的开头,所以我得到:
"5; name=John; gender=male";
如果我尝试document.cookie = null;那么它甚至什么都不做.
怎么会这样?这是一个变量,不是吗?那么为什么赋值运算符不应该以它应该的方式工作呢?它实际上只是一些语法糖而不是一个真正的变量?如果是这样,糖究竟是什么?
所以,我当前的网页上确实没有任何错误,但我希望能够在弹出时看到错误,而不是HTTP 500错误页面.我google了一下,并认为添加这两行将解决所有问题.
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)
注意:我无法访问php.ini文件,因为我正在使用我的学校帐户的服务器.
所以我在页面顶部介绍了一个bug(在$ buggy之后没有分号):
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy
$x = 4 + 2;
...
Run Code Online (Sandbox Code Playgroud)
但是,我只是收到服务器错误:
"该网站在检索http://mywebpage.com/时遇到错误.可能是因为维护失败或配置不正确."
有任何想法吗?
编辑:
我重新配置了我的代码:
<?php
include_once 'database/errorSettings.php';
?>
<?php
$buggy // whoops
$x = 4 + 2;
...
Run Code Online (Sandbox Code Playgroud)
errorSettings.php如下:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>
Run Code Online (Sandbox Code Playgroud)
但它仍然无效...错误的重新配置方式?
我正在尝试为我的应用启用调试,但看起来我没有任何反馈.
环境设置为本地(在.env文件中),如果我运行
php artisan env
Run Code Online (Sandbox Code Playgroud)
我明白了
Current application environment: local
Run Code Online (Sandbox Code Playgroud)
我本地环境的调试配置设置为 true
return [
'debug' => true,
Run Code Online (Sandbox Code Playgroud)
此外,如果我在我的主配置文件(配置文件夹中的app.php)中设置,debug = true我仍然有反馈说代码中有错误.
如果代码中有错误,我只有一个空页面(对于debug = false)
我错过了什么?
我经常使用ipdb,只是跳转到一段孤立的代码,即很难编写一个使用它的真实脚本.相反,我用模拟编写了一个最小的测试用例并跳转到它.
工作流程的示例:
def func():
...
import ipdb
ipdb.set_trace()
...
def test_case():
...
func()
...
Run Code Online (Sandbox Code Playgroud)
然后,调用
py.test test_file.py -s -k test_case
Run Code Online (Sandbox Code Playgroud)
现在,通常我只检查一个或两个变量,然后想要退出.更改代码并重新执行.
我该如何戒烟?手册说q退出调试器.它(真的)没有.在调试器实际终止之前,您必须退出几次.Ctrl-C和Ctrl-D的相同行为(多次击中Ctrl-D的挫折最终也会退出终端).
是否有一种强制退出的聪明方法?这个工作流程是否合理?这样做的标准方法是什么?
当有人在我们的网站上进行报告和分析时,我会触发图像标记:
<img src="https://example.evyy.net/conv/?somechannel=cats&cid=3790&oid=123&cat1=premium&sku1=123&qty1=1&amt1=456&custid=qbc" />
Run Code Online (Sandbox Code Playgroud)
昨天我们发现交通量下降.要调试我访问了该站点并注册,使用控制台打开网络选项卡.
我在过滤器框中输入了"evyy",我看到了我的标签的3个订单项.
这是什么意思?是否应该只有1个订单项?一个项目的状态为302,另外两个项目的状态为200.那是好的吗?
屏幕附上.这看起来"正确"吗?在网络标签中是否有任何向下钻取我可以查看我们的跟踪是否存在问题?