我一直在阅读有关追踪SIGSEGV
Android应用程序的原因的其他帖子.我打算在我的应用程序中搜索与Canvas使用相关的可能的NullPointers,但我的SIGSEGV
barf每次都有不同的内存地址.另外我见过code=1
和code=2
.如果内存地址是0x00000000
,我有一个线索它是一个NullPointer.
我得到的最后一个是code=2
:
A/libc(4969): Fatal signal 11 (SIGSEGV) at 0x42a637d9 (code=2)
Run Code Online (Sandbox Code Playgroud)
有关如何追踪此问题的任何建议?
我有一个嫌疑人,但我还没有热衷于尝试它.我的应用程序使用OSMDroid API进行离线映射.OverlayItem类表示地图上的标记/节点.我有一个服务,它通过网络收集数据以填充OverlayItem,然后显示在地图上.为了简化我的设计,我将OverlayItem扩展到我自己的NodeOverlayItem类中,该类包含我在UI Activity和Service中使用的一些附加属性.这给了我UI和服务的单点项目信息.我使用Intents广播到Activity,以便在更改内容时刷新UI映射.Activity绑定到Service,并且有一个Service方法来获取NodeOverlayItem的列表.我认为可能是OSMDroid API使用OverlayItem,而我的服务同时更新节点信息.(并发问题)
在我写这篇文章时,我认为这确实是问题所在.令人头疼的是没有从NodeOverlayItem拆分Node和OverlayItem,而是Activity需要来自Node的一些数据,服务保存.另外,当创建Activity(onResume等等)时,需要从活动离开时服务一直维护的Node数据重新创建OverlayItem对象.例如,您启动应用程序,服务收集数据,UI显示数据,您转到主页,然后返回应用程序,活动将需要从最新的服务节点数据中提取并重新创建OverlayItem.
我知道这不是一个很好或明确的问题.这就像我所有的SO问题都是利基或模糊.如果有人对如何解释这些SIGSEGV
错误有任何建议,我们将不胜感激!
更新 这是调试会话期间捕获的最新崩溃.我有3个这样的设备用于测试,当我开发和测试时,它们并不都可靠地崩溃.我添加了一些额外的内容,因此可以注意到GC日志记录.您可以看到问题可能与内存耗尽无关.
03-03 02:02:38.328: I/CommService(7477): Received packet from: 192.168.1.102
03-03 02:02:38.328: I/CommService(7477): Already processed this packet. It's a re-broadcast from another node, or from myself. It's not a repeat broadcast though.
03-03 02:02:38.406: D/CommService(7477): Checking OLSRd info...
03-03 02:02:38.460: D/CommService(7477): Monitoring nodes...
03-03 02:02:38.515: D/dalvikvm(7477): GC_CONCURRENT freed 2050K, 16% …
Run Code Online (Sandbox Code Playgroud) 我很难找到并回答这个问题.如果我不得不从专门为合作伙伴设置的VM中删除Windows许可证密钥,并且需要在VM移交之前将其删除,我将如何进行此操作?当然,内置的30天宽限期已经过期,我正在使用MSDN许可证密钥,但我需要在关闭虚拟机之前删除密钥.收件人可以输入自己的许可证密钥.例如,如何重置激活密钥向导的唠叨?
我最近一直在玩Cython以加速,但我的项目继承了一个模块,它有一个copy()
使用的方法deepcopy()
.我尝试deepcopy()
在一个覆盖的版本中实现copy()
,我认为我有它的工作,但它似乎不再存在.
TypeError: object.__new__(cython_binding_builtin_function_or_method) is not safe,
use cython_binding_builtin_function_or_method.__new__()
Run Code Online (Sandbox Code Playgroud)
这是在python/lib/copy_reg.py中发生的:
return cls.__new__(cls, *args)
Run Code Online (Sandbox Code Playgroud)
我在这里使用Python 2.7.新版本的Python是否有可能deepcopy()
以"安全"的方式返回?我也是最新版的Cython,0.15.1.
请注意,我已删除以前的更新,以尽可能简化此操作.
好!我想我发现了不兼容性,但我真的不知道该怎么做.
class CythonClass:
def __init__(self):
self._handle = self._handles.get("handle_method")
def call_handle(self):
self._handle(self)
def handle_method(self):
print "I'm a little handle!"
handles = {"handle_method", handle_method}
Run Code Online (Sandbox Code Playgroud)
然后在我的主应用程序中:
from cython1 import CythonClass
from copy import deepcopy
if __name__ == "__main__":
gc1 = CythonClass()
gc1.call_handle()
gc2 = deepcopy(gc1)
Run Code Online (Sandbox Code Playgroud)
我明白了:
I'm a little handle!
Traceback (most recent call last):
File "cythontest.py", …
Run Code Online (Sandbox Code Playgroud) 我很难理解如何在Rails中实现单个模型自联接.在对ActiveRecord的关联部分2.10指南简要介绍了自联接,但不提供足够的信息,以及每个实例或发布这个如引用友好的朋友Railcast例子,这不是一个单一的模式自加入作为描述的Rails指南第2.10节.
这个想法是has_many和belongs_to本身的模型,不需要单独的关系表.我看到需要一个单独的表的唯一原因是,如果您希望关系包含更多信息而不仅仅是关系.例如"最好的朋友","几乎不认识他们"
我有一个简单的Post模式:
create_table "posts", :force => true do |t|
t.datetime "posted"
t.string "nick"
t.string "title"
t.text "content"
t.integer "parent_post_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
Run Code Online (Sandbox Code Playgroud)
parent_post_id是对其他Post post_id的自引用.posts.rb模型具有定义的关系:
class Post < ActiveRecord::Base
has_many :replies, :class_name => "Post"
belongs_to :parent_post, :class_name => "Post",
:foreign_key => "parent_post_id"
end
Run Code Online (Sandbox Code Playgroud)
在Controller或View中,我希望能够做到这样的事情:
@posts.each do |post|
...
@replies = post.replies
@replies.each do |reply|
...
end
end
Run Code Online (Sandbox Code Playgroud)
或者找一个帖子的父母:
@parent_post = post.parent_post
Run Code Online (Sandbox Code Playgroud)
这可能都是一些语法错误理解.所以,提前感谢任何能够对我有所了解的人.我查看了每个SO和博客文章,没有人尝试过"指南"中描述的单一模型自引用自连接方法.
任何提供解释的人都不会指向使用单独关系表的友方朋友示例.
我一直对一个演示中的jQuery感到有些沮丧,我正在打算一起,并且想知道以下是否只是jQuery的选择器和搜索方法的限制,或者我只是错误地使用它.
这是一个示例HTML块:
<div class='div_item'>
<td class='list'>
<dl><dt class="access_text">Div1 text1</dt></dl>
<dl><dt class="access_text">Div1 text2</dt></dl>
<dl><dt class="access_text">Div1 text3</dt></dl>
</td>
</div>
<div class='div_item'>
<td class='list'>
<dl><dt class="access_text">Div2 text1</dt></dl>
<dl><dt class="access_text">Div2 text2</dt></dl>
<dl><dt class="access_text">Div2 text3</dt></dl>
</td>
</div>
Run Code Online (Sandbox Code Playgroud)
这是jQuery 1.9.2脚本:
$().ready(function(){
$('.div_item'); // this is a 2 jQuery array, with no children
$('.div_item').find('.access_text'); // This is empty, length 0, .div_item's children aren't populated. Like I was using .children()
$('.div_item').find('.access_text').each(function() { // This doesn't work because the .div_item children aren't populated?
alert($(this).innerText);
}):
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有理由为什么$('.div_item')
数组对象中的子节点没有填充?如果它们没有填充,则无法引用它们,因此无法 …
我有一个包含复杂服务和活动UI的应用程序.该应用程序在多个设备上运行,这些设备通过WIFI相互通信.
由于该应用程序是一个原型/开发中,我想添加对"强制重启"的支持,它将杀死应用程序并重新启动它.根据用例,有很多共享的UI内容已经搞砸了,如果我只需触摸一个按钮即可完全重启应用程序,那么在测试过程中会更容易(我有多个设备).
那么,有没有人对如何:
1)强制关闭/停止/终止您自己的应用程序.
2)设置一个计时器/意图,告诉操作系统在关闭/停止/终止它之前启动你的应用程序.
任何提示将不胜感激!谢谢.
我最近在我的 Android(特别是 2.3.3 和 4.0.4)应用程序中实现了 UDP 数据包排序支持,该应用程序在设备之间广播 UDP 数据包。排序支持基本上采用任何字节 [] 并将其分成 UDP 友好的大小,并将它们作为 UDP 数据包发送出去。我包含一个有助于 UDP 序列识别的标头。现在看来,通过它广播大型数据集是可行的。任何侦听它的对等方都可以很好地重新组装序列,然后相应地处理数据。(我正在播放用相机拍摄的图像和语音片段)
但我发现序列中的数据包偶尔(经常)会被丢弃。在有人说 UDP 不可靠之前,请不要打扰。我很清楚。这里发生的事情并不一定是不可靠的。
首先,UDP 数据包排序将每 2 秒发出 1 个分段的 UDP 数据包。例如,如果数据为 128K,则会有 3 个数据包,在 6 秒内发送出去。2秒数字是为了帮助测试。
其次,我的隔离测试环境中只有 2 台设备。他们是测试 wifi 网络上唯一的人。
第三,这些设备除了测试发送和接收这些 UDP 数据包之外什么也不做。
第四,我的日志记录跟踪每个数据包的基于唯一序列的 ID。它有助于确定发送方按顺序发送了哪些数据包以及接收方收到了哪些数据包。
我无法向您显示日志,这没有帮助,但发送者会注意到每个数据包都已被广播,而接收者可能会在任何时候丢弃一个数据包。有时接收者会收到所有内容,有时会丢失一个。
现在我已经解释了所有这些,Android 队列是否收到处理套接字的 UDP 数据包?
我不认为接收方太忙而无法接受 UDP 数据包。(每 2 秒发送一次)
目前,我的服务启动了一个 Runnable,它基本上在 DatagramSocket.receive() 上循环,然后相应地处理接收到的数据包。
public class MulticastListenerRunnable implements Runnable {
...
public void run() {
try {
multicastServer = new DatagramSocket(port, null);
byte[] buffer = new byte[DatagramSession.DATAGRAM_MAX_SIZE]; …
Run Code Online (Sandbox Code Playgroud) 这已被要求部分之前,我发现下面的剪辑如何一次性设置所有类对象的属性,但它是不可能的,因为大量分配保障轨.(例如,你不能Object.attributes = {})
有没有一种很好的方法将属性从一个类合并到另一个类?
object1.attributes = object2.attributes.inject({}){ |h,(k,v)|
h[k]=v if ObjectModel.column_names.include?(k); h
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
注意:我知道还有另一个与此类似的问题,但尚未得到解答,我需要知道如何使用GeoJSON和OSM处理混合投影.
我很困惑.我在Android上使用OSMDroid API进行映射,并希望使用OpenLayers和GeoExt复制它,但我有一个包含GeoJSON节点和动作事件的投影问题.
我的tile集是基于OSM的,并且托管在与此HTML/JS相同的Web服务器上.请在下面查看.我意识到我的界限不起作用,我的预测可能完全错误.我一直在测试不同的组合.
问题是我的地图显示正确并且居中.然而:
我的GeoJSON特征节点远离地图.它们处于不同的投影长/纬度,但我不知道如何将GeoJSON long/lat设置或转换为当前地图投影.
我的mapCtrl不起作用.当我点击它时,lonlat是另一个投影(OSM投影坐标),我似乎无法转换它们)
关于范围/界限如何实际工作的任何提示将不胜感激
有人可以请一点投射建议吗?叹了口气......我对此并不耐心.
这是我的完整JS,原样如下:
var mapPanel, store, gridPanel, mainPanel, nodePop, mapPop;
Ext.onReady(function() {
var map, mapLayer, vecLayer;
var lon = -70.885610;
var lat = 38.345822;
var zoom = 17;
var maxZoom = 18;
var toProjection = new OpenLayers.Projection("EPSG:4326");
var fromProjection = new OpenLayers.Projection("EPSG:900913");
var extent = new OpenLayers.Bounds(-1.32,51.71,-1.18,51.80).transform(fromProjection, toProjection);
// Setup the node layer feature store and push it all into a vector layer
vecLayer = new OpenLayers.Layer.Vector("vector");
store = new GeoExt.data.FeatureStore({
layer: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试跟踪用户登录历史记录以进行统计,但我不清楚最好的方法是什么.我可以有一个单独的表来记录用户和他们的登录统计数据与日期,但该表可能真的很大.我可以在一个可解析的字段中跟踪User模型/对象本身中的一些历史字段,然后用一些分隔的字符串格式更新它们(它们).例如拆分:,得到最后一个,如果包含的日期代码不是今天,添加一个项目(日期+计数)否则增加,然后保存回来.至少使用第二种方法,可以很容易地删除旧项目(例如,仅保留30天的每日登录或IP),因为单独的表将需要删除旧记录的任务.
我是即时变化的忠实粉丝.任务很有用,但出于维护原因可能会使事情变得复杂.
有人有什么建议吗?我还没有外部数据缓存解决方案.任何指针也欢迎!(我一直在寻找类似的问题和答案)
谢谢!
android ×3
javascript ×2
activation ×1
activerecord ×1
android-ndk ×1
cython ×1
devise ×1
dom ×1
geojson ×1
java ×1
jquery ×1
licensing ×1
openlayers ×1
python ×1
ruby ×1
typeerror ×1
udp ×1
windows ×1