My Android game crashed on a user’s device at the highlighted line:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | GameMovement::GameMovement(GameField& field, CellCoord from, CellCoord to) : m_field(field), pBall(m_field.GetCell(from)) { GameGraph graph(&m_field, from, to); m_path.reserve(m_field.GetColumnCount() + m_field.GetRowCount()); if (!graph.FindPath(m_path)) { throw std::runtime_error( "Path not found." ); } if (m_path.size() < 2) { throw std::runtime_error( "Wrong path." ); } } |
And Google Play Console displayed the following:
Thread: terminating with uncaught exception of type std::runtime_error: Path not found. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #00 pc 0x00000000000537d4 /apex/com.android.runtime/lib64/bionic/libc.so (abort+168) #01 pc 0x00000000000d1cc0 /lib/arm64/libc++_shared.so (abort_message+76) #02 pc 0x00000000000d1e74 /lib/arm64/libc++_shared.so (demangling_terminate_handler()+62) #03 pc 0x00000000000e6b74 /lib/arm64/libc++_shared.so (std::__terminate(void (*)())+59) #04 pc 0x00000000000e6208 /lib/arm64/libc++_shared.so (__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)+152) #05 pc 0x00000000000e6160 /lib/arm64/libc++_shared.so (__cxa_throw+283) #06 pc 0x00000000008f8d80 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::GameMovement::GameMovement(LinesGame::GameField&, LinesGame::CellCoord, LinesGame::CellCoord)+18) #07 pc 0x00000000008f2c84 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::GameField::Click(LinesGame::CellCoord)+3092) #08 pc 0x000000000090f184 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::SceneRenderer::HandleMouseEvents(LinesGame::IPixelCoord*)+164) #09 pc 0x000000000090b758 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::ColorCodingRenderer::Draw(LinesGame::SceneContext const&, LinesGame::DrawingContext const&)+17) #10 pc 0x0000000000911b20 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::StackRenderer::Draw(LinesGame::SceneContext const&, LinesGame::DrawingContext const&)+51) #11 pc 0x000000000090d290 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::ProjectionRenderer::Draw(LinesGame::SceneContext const&, LinesGame::DrawingContext const&)+35) #12 pc 0x000000000090f2b8 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::SceneRenderer::Draw()+97) #13 pc 0x0000000000916f0c /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::GameFacade::DrawScene()+180) #14 pc 0x000000000092be24 /lib/arm64/libLinesGameQt_arm64-v8a.so (LinesGame::Squircle::beforeRendering()+354) #15 pc 0x0000000000364254 /lib/arm64/libQt6Core_arm64-v8a.so (void doActivate<false>(QObject*, int, void**)+363) #16 pc 0x00000000003f1ea0 /lib/arm64/libQt6Quick_arm64-v8a.so (QSGBatchRenderer::Renderer::render()+3492) #17 pc 0x0000000000406dfc /lib/arm64/libQt6Quick_arm64-v8a.so (QSGRenderer::renderScene()+136) #18 pc 0x00000000003c9dc4 /lib/arm64/libQt6Quick_arm64-v8a.so (QQuickWindowPrivate::renderSceneGraph(QSize const&, QSize const&)+662) #19 pc 0x000000000050c038 /lib/arm64/libQt6Quick_arm64-v8a.so (QSGRenderThread::syncAndRender()+732) #20 pc 0x000000000050caa8 /lib/arm64/libQt6Quick_arm64-v8a.so (QSGRenderThread::run()+935) #21 pc 0x0000000000428968 /lib/arm64/libQt6Core_arm64-v8a.so (QThreadPrivate::start(void*)+321) #22 pc 0x00000000000bb728 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) #23 pc 0x000000000005501c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) |
another question is why does not it display line numbers while I have the following in my build.gradle
:
1 2 3 4 5 6 7 8 | defaultConfig { minSdkVersion qtMinSdkVersion targetSdkVersion qtTargetSdkVersion ndk.abiFilters = qtTargetAbiList.split(",") //For debug builds native-debug-symbols.zip size is 432MB. //Use SYMBOL_TABLE to upload debug builds. ndk.debugSymbolLevel "FULL" } |
The first I idea is to check if we update game graph after Undo() and SkipTurn()